bWAPP通关记录(A1)

本文详述了在bWAPP环境中进行的各种注入测试,包括HTML、SQL、OS命令、LDAP、邮件头、SSI等多种注入类型。通过调整设置、抓包分析及代码注入尝试,展示了不同级别防护下的漏洞表现,提供了测试过程和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装
这里使用的是phpstudy进行搭建的

先下载bWAPP

打开解压之后bWAPP目录下的admin中的settings.php
在这里插入图片描述
将数据库连接名和密码改为与phpmyadmin相同的,保存

浏览器访问
在这里插入图片描述

在这里插入图片描述
点击here

在这里插入图片描述点击Login,默认密码bee/bug
在这里插入图片描述
在这里插入图片描述

HTML Injection - Reflected (GET)

HTML注入是指将HTML代码注入到Web服务器响应中,以更改最终用户的内容,也称为跨站点脚本

可以尝试HTML语句或xss注入

low
在这里插入图片描述直接在First name:Last name:输入框
尝试<script>alert('xss')</script>
在这里插入图片描述medium

同low进行尝试

会发现被全部显示

在这里插入图片描述抓包看一下
在这里插入图片描述会发现符号<>均被编码

0,1,2分别对应三个等级
找见对应的/bWAPP/bwapp/htmli_get.php文件
在这里插入图片描述三个等级分别要进行不同的检测
还会发现要调用functions_external.php文件
在这里插入图片描述
在这里插入图片描述

$input = urldecode($input);

这里使用了urldecode函数,对字符串进行URL解码,
返回的是已解码的字符串

所以可以在输入框输入编码后的代码
在这里插入图片描述
high

同medium一样被全部显示
在这里插入图片描述抓包看看
在这里插入图片描述会发现和medium一样<>均被编码

但是如果尝试在输入框输入编码后的代码并不能成功

在这里插入图片描述在这里插入图片描述htmlspecialchars() 函数把预定义的字符&," ,’ ,<,> 转换为 HTML 实体,是安全的

HTML Injection - Reflected (POST)

操作同HTML Injection - Reflected (GET)一样,只不过是成了post方式

HTML Injection - Reflected (Current URL )

low
在这里插入图片描述要在url中构造语句

在这里插入图片描述发现通过hackbar直接构造的内容会被编码

尝试抓包
在这里插入图片描述将被编码的部分改成正常的

在这里插入图片描述

弹窗成功

medium&high

在这里插入图片描述
发现同low级别的一样,但当尝试抓包修改为正常的并不能成功

看波源码

在这里插入图片描述
找见这个htmli_ current_ url.php文件后,发现这样的一段代码

学习一下document中的write用法

还会发现在case"2"时要进行xss_check_3的检测
xss_check_3HTML Injection - Reflected (GET)的high级别)在这里插入图片描述

HTML Injection - Stored (Blog)

low
在这里插入图片描述发现有输入框,尝试一下xss注入

在这里插入图片描述

medium
在这里插入图片描述这次虽然显示已经添加,但是并没有弹窗

看源码

在这里插入图片描述在这里插入图片描述
functions_external.php文件

在这里插入图片描述
可以看到case"1"case"2"都要进行sqli_check_3检测

function sqli_check_3($link, $data)
{  
    return mysqli_real_escape_string($link, $data);
}

mysqli_real_escape_string就是要转义在SQL语句中使用的字符串中的特殊字符
PHP mysqli_real_escape_string() 函数

iFrame Injection

iframe是可用于在HTML页面中嵌入一些文件(如文档,视频等)的一项技术。对iframe最简单的解释就是“iframe是一个可以在当前页面中显示其它页面内容的技术”
通过利用iframe标签对网站页面进行注入,是利用了HTML标签,实际上就是一个阅读器,可以阅读通过协议加载的活服务器本地的文件、视频等

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
low

在这里插入图片描述

没有对参数进行过滤,可以控制param标签的输入

在这里插入图片描述medium

function xss_check_4($data)
{
  
    // addslashes - returns a string with backslashes before characters that need to be quoted in database queries etc.
    // These characters are single quote ('), double quote ("), backslash (\) and NUL (the NULL byte).
    // Do NOT use this for XSS or HTML validations!!!
    
    return addslashes($data);
    
}

可以看出medium不能控制paramurl的输入,所以只能通过控制ParamHeight和ParamWidth来实现注入

大体意思就是addslashes会在数据库查询中需要引用的字符(',",\)前返回一个反斜杠字符串

进行构造

在这里插入图片描述
high

function xss_check_3($data, $encoding = "UTF-8")
{

    // htmlspecialchars - converts special characters to HTML entities    
    // '&' (ampersand) becomes '&amp;' 
    // '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set
    // "'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set
    // '<' (less than) becomes '&lt;'
    // '>' (greater than) becomes '&gt;'  
    
    return htmlspecialchars($data, ENT_QUOTES, $encoding);
       
}

htmlspecialchars()函数会把预定义的字符(&,',",<,>)转换为 HTML 实体

LDAP Injection (Search)

LDAP 全英文:Lightweight Directory Access Protocol,翻译过来就是轻量级的目录访问协议。其实就是访问目录,浏览目录。有很多企业存储一些数据信息,例如部门信息,部门里成员的信息,公司的可用设备信息等,这些信息单独放在类似于网站的那种数据库中的话,会显的有点大材小用,而把它们放在目录中,文本中最合适。好比在文档中搜索指定的内容,在目录中搜索指定的文件一样。
LDAP 也有自己指定的语法,也可理解为它是一个存储信息的数据库,为了搜索方便,很多网站提供了其查询的接口,和普通的搜索框无异,对于指定的搜索内容,在没有严格过滤的情况下,便可以造成 LDAP 注入。

在这里插入图片描述
尝试

在这里插入图片描述

在这里插入图片描述
没看懂。。

在这里插入图片描述
看了一下师傅的博客,师傅使用一个OpenLDAP的工具
LDAP 注入与防御

Mail Header Injection (SMTP)

通常的做法是网站实施联系表单,反过来将合法用户的电子邮件发送给消息的预期收件人。大多数情况下,这样的联系表单将设置SMTP标头From,Reply-to以便让收件人轻松处理联系表单中的通信,就像其他电子邮件一样。
不幸的是,除非用户的输入在插入SMTP头之前被验证,否则联系表单可能容易受到电子邮件头插入(也称为SMTP头注入)的攻击。这是因为攻击者可以将额外的头部注入到消息中,从而指示SMTP服务器执行与预期不同的指令。

在这里插入图片描述在这里插入图片描述

外国大佬的分析What Are Email Injection Attacks

OS Command Injection

在这里插入图片描述www.nsa.gov;dir
在这里插入图片描述

www.nsa.gov&&dir

在这里插入图片描述

原理:在DNS查询之后再执行dir命令

medium

在这里插入图片描述
在这里插入图片描述commandi_check_1是把&;替换了,还可以使用|

构造
www.nsa.gov | dir

high

escapeshellcmd()函数用来跳过字符串中的特殊符号,防止恶意用户耍花招破解服务器系统

OS Command lnjection - Blind

在这里插入图片描述盲注就是注入后并不会返回信息,要根据反应时间判断命令是否成功执行

输入127.0.0.1
在这里插入图片描述
输入127.0.0.1&&dir
在这里插入图片描述

PHP Code Injection

在这里插入图片描述low
在这里插入图片描述
medium&high

使用了htmlspecialchars函数无法绕过

在这里插入图片描述

Server-Side Includes (SSI) Injection

SSI是英文"Server Side Includes"的缩写,翻译成中文就是服务器端包含的意思。SSI是用于向HTML页面提供动态内容的Web应用程序上的指令。 它们与CGI类似,不同之处在于SSI用于在加载当前页面之前或在页面可视化时执行某些操作。 为此,Web服务器在将页面提供给用户之前分析SSI
可在SHTML文件中使用SSI指令引用其他的html文件(#include),此时服务器会将SHTML中包含的SSI指令解释,再传送给客户端,此时的HTML中就不再有SSI指令了。Server-Side Includes攻击允许通过在HTML页面中注入脚本或远程执行任意代码来利用Web应用程序。 一种对于这类漏洞的挖掘方式即是查看.stm,.shtm和.shtml的页面是否存在,但是缺少这些类型的页面并不意味着不存在SSI攻击。

关于SSI注入(server side includes injection 服务器端包含注入)

在这里插入图片描述

参考师傅的博客也没成功,正奇怪了。。

然后发现

默认Apache不开启SSI,SSI这种技术已经比较少用了 IIS和Apache都可以开启SSI功能

从bwapp学服务端包含注入(SSI injection)

sql部分有点问题演示不了。。等下刷完了用bee-box试试

SQL Injection (GET/Search)

SQL Injection (GE’ T/Select)

SQL Injection (POST/Search)

SQL Injection (POST/Select)

SQL Injection (AJAX/JSON/jQuery)

SQL Injection (CAPTCHA)

SQL Injection (Login Form/Hero)

SQL Injection (Login Form/User)

SQL Injection (SQLite)

SQL Injection (Drupal)

SQL Injection - Stored (Blog)

SQL Injection - Stored (SQLite)

SQL Injection - Stored (User-Agent)

SQL Injection - Stored (XML)

SQL Injection - Blind - Boolean-Based

SQL Injection - Blind - Time _Based

SQL Injection - Blind (SQLite)

SQL Injection - Blind (Web Services/SOAP)

XML/XPath Injection (Login Form)

xml external entity injection即xml外部实体注入漏洞
就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"
也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

XML 教程

XPath Injection是指利用XPath 解析器的松散输入和容错特性,能够在 URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知 识的情况下,通过XPath查询得到一个XML文档的完整内容。Xpath注入攻击本质上和SQL注入攻击是类似的,都是输入一些恶意的查询等代码字符串,从而对网站进行攻击。

XPath 教程

在这里插入图片描述

原理
XPath注入的原理其实和sql注入很像, XPath注入攻击主要是通过构建特殊的输入,这些输入往往是XPath语法中的一些组合,这些输入将作为参数传入Web 应用程序,通过执行XPath查询而执行入侵者想要的操作,但是,注入的对象不是数据库users表了,而是一个存储数据的XML文件。攻击者可以获取 XML 数据的组织结构,或者访问在正常情况下不允许访问的数据,如果 XML 数据被用于用户认证,那么攻击者就可以提升他的权限。因为xpath不存在访问控制,所以我们不会遇到许多在SQL注入中经常遇到的访问限制。XML 中没有访问控制或者用户认证,如果用户有权限使用 XPath 查询,并且之间没有防御系统或者查询语句没有被防御系统过滤,那么用户就能够访问整个 XML 文档。 注入出现的位置也就是cookie,headers,request parameters/input等。

尝试使用sql注入的方法

low

1

在这里插入图片描述

1'

在这里插入图片描述
在这里插入图片描述

通过读取heroes.xml文件的内容, 并且通过xpath寻找用户的账户和密码来验证登录

heroes.xml文件(是一个xml文件里面包含了用户名和密码等信息)

<?xml version="1.0" encoding="UTF-8"?>
<heroes>
	<hero>
		<id>1</id>
		<login>neo</login>
		<password>trinity</password>
		<secret>Oh why didn't I took that BLACK pill?</secret>
		<movie>The Matrix</movie>
		<genre>action sci-fi</genre>
	</hero>
	<hero>
		<id>2</id>
		<login>alice</login>
		<password>loveZombies</password>
		<secret>There's a cure!</secret>
		<movie>Resident Evil</movie>
		<genre>action horror sci-fi</genre>
	</hero>
	<hero>
		<id>3</id>
		<login>thor</login>
		<password>Asgard</password>
		<secret>Oh, no... this is Earth... isn't it?</secret>
		<movie>Thor</movie>
		<genre>action sci-fi</genre>
	</hero>
	<hero>
		<id>4</id>
		<login>wolverine</login>
		<password>Log@N</password>
		<secret>What's a Magneto?</secret>
		<movie>X-Men</movie>
		<genre>action sci-fi</genre>
	</hero>
	<hero>
		<id>5</id>
		<login>johnny</login>
		<password>m3ph1st0ph3l3s</password>
		<secret>I'm the Ghost Rider!</secret>
		<movie>Ghost Rider</movie>
		<genre>action sci-fi</genre>
	</hero>
	<hero>
		<id>6</id>
		<login>selene</login>
		<password>m00n</password>
		<secret>It wasn't the Lycans. It was you.</secret>
		<movie>Underworld</movie>
		<genre>action horror sci-fi</genre>
	</hero>
</heroes>

1' or '1' = '1

在这里插入图片描述

medium&high

function xmli($data)
{
    
    if(isset($_COOKIE["security_level"]))
    {

        switch($_COOKIE["security_level"])
        {

            case "0" :

                $data = no_check($data);
                break;

            case "1" :

                $data = xmli_check_1($data);
                break;

            case "2" :

                $data = xmli_check_1($data);
                break;

            default :

                $data = no_check($data);
                break;

        }

    }

在这里插入图片描述
可以看到很多字符均被过滤

XML/XPath Injection (Search)

在这里插入图片描述
在这里插入图片描述
heroes.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<heroes>
	<hero>
		<id>1</id>
		<login>neo</login>
		<password>trinity</password>
		<secret>Oh why didn't I took that BLACK pill?</secret>
		<movie>The Matrix</movie>
		<genre>action sci-fi</genre>
	</hero>
	<hero>
		<id>2</id>
		<login>alice</login>
		<password>loveZombies</password>
		<secret>There's a cure!</secret>
		<movie>Resident Evil</movie>
		<genre>action horror sci-fi</genre>
	</hero>
	<hero>
		<id>3</id>
		<login>thor</login>
		<password>Asgard</password>
		<secret>Oh, no... this is Earth... isn't it?</secret>
		<movie>Thor</movie>
		<genre>action sci-fi</genre>
	</hero>
	<hero>
		<id>4</id>
		<login>wolverine</login>
		<password>Log@N</password>
		<secret>What's a Magneto?</secret>
		<movie>X-Men</movie>
		<genre>action sci-fi</genre>
	</hero>
	<hero>
		<id>5</id>
		<login>johnny</login>
		<password>m3ph1st0ph3l3s</password>
		<secret>I'm the Ghost Rider!</secret>
		<movie>Ghost Rider</movie>
		<genre>action sci-fi</genre>
	</hero>
	<hero>
		<id>6</id>
		<login>selene</login>
		<password>m00n</password>
		<secret>It wasn't the Lycans. It was you.</secret>
		<movie>Underworld</movie>
		<genre>action horror sci-fi</genre>
	</hero>
</heroes>

同上一关一样也是通过读取heroes.xml文件的内容, 然后通过xpath找到信息

通过使用xpath的搜索语句拼合出需要的数据

    // Loads the XML file
    $xml = simplexml_load_file("passwords/heroes.xml");
     
    // XPath search
    // $result = $xml->xpath("//hero[genre = '$genre']/movie");
    $result = $xml->xpath("//hero[contains(genre, '$genre')]/movie");

构造
genre=')]/login|//hero/password| a[contains(a,'

在这里插入图片描述medium&high

在这里插入图片描述
调用了xmli_check_1对字符进行了过滤

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值