【渗透测试】VulnHub-W1R3S: 1

VulnHub-W1R3S: 1渗透测试详细流程

VulnHub-W1R3S: 1渗透测试详细流程

这台靶机可能是太简单了吧,打的是相当的顺利,相比之前要好很多,时间主要花费在两个小工具的学习上,这俩工具功能强大,但是以前没有接触过。再练~

基本思路:
还是跟前几台靶机一样,先信息收集,nmap找ip,查端口,web页面查找有用信息,扫目录;
找到一个Cuppa CMS页面,发现漏洞利用点;
利用curl获取密码文件和shadow文件;利用john破解此密码;
利用ssh进行登陆,利用sudo暂时申请root权限
提权后查看目录,找到flag

小知识点

一、CuppaCMS:远程任意代码执行漏洞

CuppaCMS是一套内容管理系统(CMS)。CuppaCMS 2019-11-12之前版本存在安全漏洞,攻击者可利用该漏洞在图像扩展内上传恶意文件,通过使用文件管理器提供的重命名函数的自定义请求,可以将图像扩展修改为PHP,从而导致远程任意代码执行。

二、LFI漏洞:本地文件包含

​ LFI允许攻击者通过浏览器包含一个服务器上的文件。当一个WEB应用程序在没有正确过滤输入数据的情况下,就有可能存在这个漏洞,该漏洞允许攻击者操纵输入数据注入路径遍历字符包含web服务器的其他文件

  • 主要涉及到的函数
    include()、require()、include_once()、require_once()、magic_quotes_gpc()、allow_url_fopen()、allow_url_include()、move_uploaded_file() 、readfile() file()、file_get_contents()、upload_tmp_dir()、post_max_size()、max_input_time()

  • 典型漏洞代码:

LFI漏洞很容易被识别和利用。任何一个包含WEB服务器文件的脚本,对于下一步的LIF测试,都是一个很好的切入点,可以尝试通过操纵文件位置参数来利用它

  • 利用

    1.使用php://filter协议和base64编码去访问本地文件得到源码
    访问`http://127.0.0.1/LFI.php?include=php://filter/read=convert.base64-encode/resource=func1.php`
    2. 使用zip:// 协议去访问压缩文件中的文件
    这就意味着可以直接绕过后缀名。 比如访问'http://127.0.0.1/LFI.php?include=zip://func1.jpg#func1.php',其中fun1.jpg 是改了后缀的压缩文件。
    3.使用phar://协议去读取服务器端的phar文件, 执行 phar 文件中的php 脚本或者其他。这需要事先本地创建一个phar文件再上传到目标站点。
    创建phar 文件代码, 其中phar 文件里只包含一个 createwebshell.php 文件。
        <?php
        $phar = new Phar('webshell4.phar');
        $phar->addFile('createwebshell.php', 'cws.php');
        ?>
    

    phar文件就相当于 java 里的jar 文件, 只不过phar 文件不可以用压缩文档打开, 可以用编辑器打开, 会发现phar 文件拥有特别的格式。
    通过访问http://127.0.0.1/LFI.php?include=phar://webshell.phar/cws.php 可以执行cws脚本, 其中webshell.phar 的后缀可以随意更改以便绕过后缀检查。

参考文章:https://www.bugku.com/thread-19-1-1.html

三、sudo su和su的区别

su是申请切换root用户,需要申请root用户密码

sudo su是当前用户暂时申请root权限,所以输入的不是root用户密码,而是当前用户的密码。

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。

它的特性主要有这样几点:

§ sudo能够限制用户只在某台主机上运行某些命令。

§ sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。

§ sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。

§ sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440。

必学工具

一、curl:文件传输工具

http://aiezu.com/article/linux_curl_command.html

  • curl常用参数解读:

    • -d 参数用于发送 POST 请求的数据体,使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST;
    • –data-urlencode参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。
    • -A 参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version]
    • -i 参数打印出服务器回应的 HTTP 标头
    • -s 参数将不输出错误和进度信息

二、Nikto :web漏洞扫描神器

  • nikto常用命令

    -upodate 升级,更新插件

    -host 扫描目标URl

    -id username:password http认证接口

    -list-plugins 列出所有可用的插件

    -evasion IDS/IPS逃避技术(实例演示里有详细信息)

    -port 指定端口(默认80)

    -ssl 使用SSL

    -useproxy 使用http代理

    -vhost 域名 当一个IP拥有多个网站时 使用

  • nikto交互参数(扫描过程中使用)

    空格 报告当前扫描状态

    v 显示详细信息

    d 显示调试信息

    e 显示http错误信息

    p 显示扫描进度

    r 显示重定向信息

    c 显示cookie

    a 显示身份认证过程

    q 退出程序

    N 扫描下一个目标

    P 暂停扫描

1.扫描单个地址时

nikto -host http://xxx.xxx.xx.xx

2.扫描多个地址时

nikto -host url.txt

3.扫描https网站

nikto -host url -ssl -port 443

4.使用代理进行扫描

nikto -h URL -useproxy http://127.0.0.1:1080(没有无法演示,若以后有条件补上)。

5.使用LibWhisker绕过IDS的检测(10个参数 1-8、A、B)

​ 1 随机URI编码(非utf-8)

​ 2 自选择路径(/. /)

​ 3 过早结束的URL

​ 4 使用长随机字符串

​ 5 使用假参数

​ 6 使用tab作为命令的分隔符

​ 7 更改URL的大小写

​ 8 使用windows的命令分隔符""

​ A 使用回车0x0d作为请请求分隔符

​ B 使用二进制0x0b作为请请求分隔符

niketo -host www.xxxx.com -ssl -port 443 -evasion 1358Nikto配合Nmap扫描

6.配合 Nmap 进行扫描

nmap -p80 x.x.x.x -oG - |nikto -host -

nmap扫描开放80端口的IP并通过oG选项对扫描结果输出并整理),然后通过管道符“|”将上述扫描结果导入至nikto进行扫描

三、john开膛手:密码破解工具

kali自带

全称叫“John the Ripper password cracker(约翰开膛手密码破解)”。

John the Ripper是一个快速的密码破解程序,目前可用于Unix,Windows,DOS和OpenVMS的许多口味。其主要目的是检测弱Unix密码。除了在各种Unix系统上最常见的几种crypt(3)密码哈希类型之外,现在支持的还有Windows LM哈希,以及社区增强版本中的大量其他哈希和密码。

用法:

john [OPTIONS] [PASSWORD-FILES]

john [选项] [密码文件]

选项:

--single[=SECTION] ]“单裂”模式

--wordlist[=FILE] --stdin 单词表模式,从FILE或stdin读取单词

--pipe 像--stdin一样,但批量读取,并允许规则

--loopback[=FILE] 像 --wordlistg一样, 但是从.pot文件中获取单词

--dupe-suppression 压制wordlist中的所有模糊(并强制预加载)

--prince[=FILE] PRINCE模式,从FILE中读取单词

--encoding=NAME 输入编码(例如,UTF-8,ISO-8859-1)。 也可以看看doc / ENCODING和--list = hidden-options。

--rules[=SECTION] 为单词表模式启用单词修改规则

--incremental[=MODE] “增量”模式[使用部分模式]

--mask=MASK 掩码模式使用MASK

--markov[=OPTIONS] “马尔可夫”模式(参见doc / MARKOV)

--external=MODE 外部模式或字过滤器

--stdout[=LENGTH] 只是输出候选人密码[在LENGTH切]

--restore[=NAME] 恢复被中断的会话[名为NAME]

--session=NAME 给一个新的会话NAME

--status[=NAME] 打印会话的状态[名称]

--make-charset=FILE 制作一个字符集文件。 它将被覆盖

--show[=LEFT] 显示破解的密码[如果=左,然后uncracked]

--test[=TIME] 运行测试和每个TIME秒的基准

--users=[-]LOGIN|UID[,..] [不]只加载这个(这些)用户

--groups=[-]GID[,..] 只加载这个(这些)组的用户

--shells=[-]SHELL[,..] 用[out]这个(这些)shell来加载用户

--salts=[-]COUNT[:MAX] 用[out] COUNT [到MAX]散列加载盐

--save-memory=LEVEL 启用内存保存,级别1..3

--node=MIN[-MAX]/TOTAL 此节点的数量范围不在总计数中

--fork=N 叉N过程

--pot=NAME 锅文件使用

--list=WHAT 列表功能,请参阅--list = help或doc / OPTIONS

--format=NAME 强制使用NAME类型的散列。 支持的格式可以用--list=formats和--list=subformats来看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃_早餐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值