一、SQL注入
-
首先进入pikachu漏洞练习平台,找到SQL字符型注入(get),我们随便输入什么字,
-
我们可以查看到确实是get请求
-
将该网页的url复制好,打开sqlmap
-
查看有哪些数据库
python sqlmap.py -u “http://192.168.242.1/vul/sqli/sqli_str.php?name=%E9%98%BF%E7%B4%A2&submit=%E6%9F%A5%E8%AF%A2” --dbs
-
查看pikachu数据库中有哪些表
python sqlmap.py -u “http://192.168.242.1/vul/sqli/sqli_str.php?name=%E9%98%BF%E7%B4%A2&submit=%E6%9F%A5%E8%AF%A2” -D “pikachu” --tables
-
开始爆破用户名和密码
python sqlmap.py -u “http://192.168.242.1/vul/sqli/sqli_str.php?name=%E9%98%BF%E7%B4%A2&submit=%E6%9F%A5%E8%AF%A2” --dump -D “pikachu” -T “users” -C “username,password”
二、一句话木马上传(1)
-
靶场内容选择:pikachu Unsafe Fileupload
-
先看一下直接上传php文件是个什么效果。网站要求只能上传图片文件,因此当我们选择飞图片文件的时候。如下图所示,刚选好文件,还没有点 “开始上传” 的时候,就弹出了提示 上传的文件不符合要求。
-
绕过姿势,客户端验证一般两种绕过方法(1)浏览器禁用javascript(2)burpsuite抓包改后缀。这里我们使用第二种。
首先我们写一个带有一句话木马的php文件
-
将文件后缀改为png并尝试上传,上传过程中使用抓包软件抓包
-
抓到如图所示报文,右键 send to repeater
-
把文件后缀改成php,点send,上传成功
-
显示文件上传成功
三、一句话木马上传(2)
-
选择靶场,MIME type
-
尝试上传php文件,显示上传的图片只能是jpg,jpeg,png格式的!
-
绕过方式:(1)上传123.php,burpsuite抓包修改MIME type (2)上传sh.png,burpsuite抓包修改文件后缀 这里我们采用第二种
上传123.png,burpsuite抓包
抓到如图所示报文,右键 send to repeater
-
把文件后缀改成php,点send,上传成功
-
MIME类型在HTTP request报文中MIME类型在Content-Type字段体现。本关的防护代码中$mime是一个包含合法MIME类型的数组,也就是MIME类型白名单;然后将这个白名单作为参数传入了upload_sick()函数进行服务器端的检测。
但是,upload_sick()函数不安全之处有两点:
(1)仅检查了MIME类型,可以通过抓包修改绕过。
(2)保存文件的时候没有重命名文件,这样即使网页不回显文件保存路径,也有很大概率可以被攻击者猜测到。
整个关卡还有一处不安全,就是回显了文件保存路径。成功上传webshell,并且知道文件保存路径后,攻击者就可以连接shell了
四、连接到webshell -
使用蚁剑连接我们留下的后门
-
点击添加后即可看到我们出现了一条记录
-
右键选择文件管理,我们就能操作网站的文件了
网站文件目录如下
五、使用pikachu复现xss漏洞
(1)反射型xss(get)
-
选择反射型xss(get)
-
我们输入一个简单的XSS语句攻击得到用户cookie
得到admin的cookie
(2)储存型XSS
-
这一关没有长度输入限制,我们直接输入payload:
-
并且留言列表里面也出现了我们的记录
3.现在我们换一个浏览器,进入本关卡页面可以看到也弹出了对话框,说明存储型XSS能危害所有访问受影响页面的用户。
六、使用DVWA对CSRF漏洞进行复现
(1)low难度
1.首先我们将DVWA的安全等级设置为low
-
我们选择CSRF页面
-
我们可以知道在low的等级下,该页面的原码并没有隐藏的token
-
于是我们可以伪造一个简陋的链接:在我们原本的地址后加上?password_new=password&password_conf=password&Change=Change#一旦用户点击链接,就会出现红字:
这样我们就成功地将密码更改为password了
(2)medium难度
- 我们首先设置难度为medium
2.进入源代码查看与low难度的区别
我们可以发现,比起low难度的代码,多了一行
if( eregi( $_SERVER[ ‘SERVER_NAME’ ], $_SERVER[ ‘HTTP_REFERER’ ] ) )
这句代码的作用是:检查string函数中是否含有pattern,如果有返回True,反之False
因此,此句是判断HTTP_REFERER中是否包含SERVER_NAME,HTTP_REFERER是Referer参数值,即来源地址。SERVER_NAME是host参数及主机ip名。所以,如果我们想要破解它,就要让Referer参数值包含主机名
3. 我们写两个html文件,作为被攻击的地址:
<·img src=“http://192.168.1.102/dvwa-master/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change#” border=“0” style=“display:none;”/>
<·h1>404<·h1>
<·h2>file not found.<h2·>
写好后将其命名为ip地址.html格式,如:192.168.242.1.html 然后将其放在网页根目录WWW的DVWA文件中
- 我们打开burp suite,对csrf界面抓一次包,发送至repeater,将Referer地址改为http://攻击者服务器地址/dvwa/被攻击ip地址.html格式,如图:
密码更改成功
(3)high难度
- 我们首先设置难度为medium
2.进入源代码查看与low难度的区别
这次有了token值,这个值并不是很容易就看到的,我们需要在攻击者服务器上获取被攻击者的token值。csrf攻击本质是重要操作的所有参数,都可以被攻击者猜测到。
因此我们必须要获得token值。
3. 我们可以利用xss漏洞。我们需要构造一条语句来获取token,由于有字符数限制,这里有两种方法,一是利用burp suite进行抓包,然后改参数,运行获取token。二是利用火狐浏览器。
-
我们使用burp suite进行抓包得到cookie
-
得到token后就可以使用medium的攻击方式实现攻击