38 KiB
school project
stap 1 firmware downloaden stap 2 extract de binary met binwalk stap3: de geextracte binary had enkele files die html documents bleken te zijnn en dan een zip file de files hielden in: 19BD0 19D34 19E9C 50040 en 50040.7z
stap 4: ik besloot om de files elk om beurt wat beter te bekijken en te eindigen met de 7zip file omdat deze het interessants leek. Uit de extractie van binwalk daarnet heb ik ook gezien dat meerdere van deze files geclassificeerd werden als html headers. nu als ik een cat zou uitvoeren op een van deze files zou dit een tijdje duren, dus er is waarschijnlijk een groot deel data waar ik niets mee ben. Ik heb dus de tool strings gebruikt op deze file en de uitkomst gepiped naar de naam van het bestand met een achtervoegsel .strings ik heb hiermee uitgevonden dat 19BD0 een stuk html bezit die gemaakt blijkt te zijn voor het updaten van de firmware:
<html><head></head>UPDATING FIRMWARE
This page can be used to update the firmware of this device.
</html> <html><head></head>FAILED TO UPLOAD IMAGE
Unable to upload the image, please make sure the uploaded file is the correct image.
</html>daarna volgde wat ik verwacht een config te zijn voor een html server, of een http header:
HTTP/1.1 200 OK Date: Fri, 11 Jul 2008 12:00:00 GMT Content-Type: text/html; charset=utf-8 Content-Length: %d Server: Emergency Room Conection: Close
en dan meer html
<html><head><script> var count = 90; function init() { countdown(); } function countdown() count--; document.getElementById('WaitInfo').value = count; if (count >= 1) setTimeout('countdown()',1000); else top.location.href=""; </script></head>IMAGE UPLOADED SUCCESSFULLY
%d bytes uploaded.
The WEB server is shuting down and the firmware updating will start immediately. Please DO NOT POWER OFF the device. And please wait for seconds...
</html>hier kunnen we zien dat er een script runnned dat een countdown doet van 90 naar 1 met een timeout van 1000 ms?
dan volgt een stuk config file:
bootcmd=tftp bootdelay=5 baudrate=57600 ethaddr="00:AA:BB:CC:DD:10" ipaddr=192.168.0.20 serverip=192.168.0.3
dan enkele lijnen van chars en dan een linux kernel image
de volgende file is 19D34.strings
ik denk dat binwalk gewoon alles geextract heeft maar meerdere keren, want deze fil is gewoon hetzelfde als de vorige maar zonder de eerste html pagina
dit blijkt ook zo te zijn voor 19e9C, wat ook begint met de html tag maar nu van het laatste stuk html
de laatste strings file lijkt gewoon data te zijn, er is niks van code te vinden met enkele greps naar belangrijke woorden, zoals server, html, etc
nu komen we aan de zip file, specifiek een 7zip, jammer genoeg is dit extracten niet doenbaar, 7zip geeft een error, binwalk heeft dit dus jammer genoeg niet geweldig geextract. Na terug te kijken in de binwalk output zie ik dat er ook nog een stuk compressed data is van het LZMA formaat. en na wat googelen kwam ik een manier tegen om dit te extracten. door eerst het stuk van de lzma uit te knippen (wat gelukkig aan het einde van mijn binary zit) kan ik dit dan extracten. Dit kan ik doen door een tool die dd noemt te gebruiken. na dd te gebruiken heb ik dus de juiste chunk eruit geknipt, en voor de veiligheid heb ik ook de kernel eruit geknipt. Jammer genoeg geeft lzma een error wanneer ik dit probeer te extracten. Na opnieuw wat te googelen kwam ik op een stackoverflow die zei dat dit kwam omdat je het inleest als een bestand ipv een stream, de oplossing was dus om het in te lezen met een stream wanneer je het probeert te extracten. dit zal nog altijd een error geven, maar je zult je bestand hebben om op voort te werken.
hierna voerde ik een binwalk uit op het bestand aangezien het veel groter is en daarna ook een strings:
output binwalk: DECIMAL HEXADECIMAL DESCRIPTION
2100864 0x200E80 MySQL MISAM compressed data file Version 8 3260492 0x31C04C Linux kernel version "2.6.21 (andy@ipcam-linux.alphanetworks.com) (gcc version 3.4.2) #537 Tue Jul 3 11:17:25 CST 2018" 3261504 0x31C440 CRC32 polynomial table, little endian 3289600 0x323200 SHA256 hash constants, little endian 3354536 0x332FA8 Copyright string: "Copyright (c) 2010 Alpha Networks Inc." 3365554 0x335AB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/mlme.c:%d assert SupRateLen <= MAX_LEN_OF_SUPPORTED_RATESfailed 3365678 0x335B2E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/mlme.c:%d assert ExtRateLen <= MAX_LEN_OF_SUPPORTED_RATESfailed 3368674 0x3366E2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/action.c:%d assert pAd->BATable.BAOriEntry[i].Wcid < MAX_LEN_OF_MAC_TABLEfailed 3368814 0x33676E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/action.c:%d assert pBAEntry->Wcid < MAX_LEN_OF_MAC_TABLEfailed 3369298 0x336952 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert mpdu_blkfailed 3369394 0x3369B2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert listfailed 3369486 0x336A0E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert mpdu_blk->pPacketfailed 3369590 0x336A76 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pBAEntry->list.qlen == 0failed 3369874 0x336B92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert TID < NUM_OF_TIDfailed 3370370 0x336D82 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pEntryfailed 3370462 0x336DDE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->BATable.numAsOriginator != 0failed 3370654 0x336E9E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->BATable.numAsRecipient != 0failed 3371190 0x3370B6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pAd->MacTab.Content[Elem->Wcid].Sst == SST_ASSOCfailed 3371690 0x3372AA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pRxBlk->pRxPacketfailed 3371842 0x337342 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert (0<= pBAEntry->list.qlen) && (pBAEntry->list.qlen <= pBAEntr 3372002 0x3373E2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert pBAEntryfailed 3372146 0x337472 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert 0failed 3372234 0x3374CA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/ba_action.c:%d assert (pBAEntry->list.qlen == 0) && (pBAEntry->list.next == NULL)f 3372382 0x33755E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pEntryfailed 3372678 0x337686 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert Length <= MGMT_DMA_BUFFER_SIZEfailed 3372850 0x337732 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pTxWIfailed 3373206 0x337896 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pProbeEntry != NULLfailed 3373346 0x337922 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pProbeEntryfailed 3373458 0x337992 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert (pktLen > 34)failed 3373558 0x3379F6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pSrcBuffailed 3373650 0x337A52 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pRxBlk->pRxPacketfailed 3373882 0x337B3A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pAd->FragFrame.LastFrag == 0failed 3373998 0x337BAE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pHeaderfailed 3374154 0x337C4A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data.c:%d assert pAd->FragFrame.pFragPacketfailed 3375390 0x33811E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/rtmp_init.c:%d assert (Length==0) || (pDest && pSrc)failed 3396606 0x33D3FE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_asic.c:%d assert BssIndex < 4failed 3396706 0x33D462 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_asic.c:%d assert KeyIdx < 4failed 3401182 0x33E5DE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data_pci.c:%d assert QueIdx < NUM_OF_TX_RINGfailed 3401362 0x33E692 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/cmm_data_pci.c:%d assert pAd->ate.QID == 0failed 3410462 0x340A1E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert 0failed 3410546 0x340A72 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pRxWI->WirelessCliID == BSSID_WCIDfailed 3411058 0x340C72 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pAd->SharedKey[BSS0][0].CipherAlg <= CIPHER_CKIP128failed 3411194 0x340CFA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlk->MpduHeaderLen >= 24failed 3411306 0x340D6A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlkfailed 3411398 0x340DC6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert (pTxBlk->TxPacketList.Number > 1)failed 3411514 0x340E3A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert (pTxBlk->TxPacketList.Number == 2)failed 3411634 0x340EB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert TX_BLK_TEST_FLAG(pTxBlk, fTX_bAllowFrag)failed 3411758 0x340F2E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/rtmp_data.c:%d assert pTxBlk->TxPacketList.Numberfailed 3411990 0x341016 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/sta/connect.c:%d assert SsidLen <= MAX_LEN_OF_SSIDfailed 3430642 0x3458F2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert memfailed 3430774 0x345976 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert DataLenfailed 3430870 0x3459D6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pDatafailed 3431114 0x345ACA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pPacketfailed 3431210 0x345B2A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert DataSize < 1530failed 3431314 0x345B92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pHeader802_3failed 3431570 0x345C92 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pNetDevfailed 3431858 0x345DB2 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert (prefixLen < IFNAMSIZ)failed 3431970 0x345E22 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert ((slotNameLen + prefixLen) < IFNAMSIZ)failed 3432590 0x34608E Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_linux.c:%d assert pTaskfailed 3432682 0x3460EA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert pPacketfailed 3432778 0x34614A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert dev_pfailed 3432906 0x3461CA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_profile.c:%d assert pRxBlk->pRxPacketfailed 3433382 0x3463A6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/os/linux/rt_main_dev.c:%d assert pAdfailed 3435026 0x346A12 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_ate.c:%d assert (BbpValue == 0x04)failed 3435450 0x346BBA Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_ate.c:%d assert RestoreRfICType != 0failed 3441134 0x3481EE Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/ate/common/rt_qa.c:%d assert bbp_data == valuefailed 3445578 0x34934A Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/rt_rf.c:%d assert (regID <= pAd->chipCap.MaxNumOfRfId)failed 3450854 0x34A7E6 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc.c:%d assert DataLen < MGMT_DMA_BUFFER_SIZEfailed 3452768 0x34AF60 Unix path: /etc/Wireless/RT2860STA/RT2860STA.dat 3452904 0x34AFE8 Unix path: /etc/Wireless/RT2860/RT2860.dat 3454578 0x34B672 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc.c:%d assert pWscPeer != NULLfailed 3458626 0x34C642 Unix path: /net/wireless/rt2860v2_sta/../rt2860v2/common/wsc_v2.c:%d assert pEntry!=NULLfailed 3520063 0x35B63F Neighborly text, "neighbor %.2x%.2x.%.2x:%.2x:%.2x:%.2x:%.2x:%.2x lost on port %d(%s)(%s)" 3637728 0x3781E0 CRC32 polynomial table, little endian 3850240 0x3AC000 LZMA compressed data, properties: 0x5D, dictionary size: 1048576 bytes, uncompressed size: 7787520 bytes
als we hiernaar kijken zien we opnieuw een lzma file onderaan die we kunnen extracten, daarboven staat een pak data over unix filesystems met enkele links naar os/linux etc. dit zal dus hetgeen zijn dat de linux kernel start. en de lzma data onderaan is dan hopelijk ons linux fs.
nu na dit te extracten was het nog altijd een volledige file, en na het file command hierop te runnen blijkt dit een ASCII cpio archive "(SVR4 with no CRC)" te zijn
gelukkig kwam ik op enkele video's die hierover uitleg gaven om het te extracten, aangezien dit een linux filesystem is kan dit problemen geven met uitpakken en mijn fs te overschrijven (paths op deze filesystem zouden niet moeten verwijzen naar de mijne en zo problemen te geven)
dit gaf enkele fouten: Cannot mknod: Operation not permitted deze error kwam voor bij veel van de files in de dev filesystem, dit zal ik later uit moeten zoeken, want als ik hier zelf mee begin te experimenteren dan kan ik mss mijn eigen filesystem wrecken
een ls command van de folder struct:
cpio git:(master) ✗ ls bin dev etc etc_ro home init lib media mnt mydlink proc sbin sys tmp usr var
en nu kan het interessante beginnen. Ik het toegang tot een linux filesystem waar ik kan zoeken naar verschillende vulnerabilities, bv als men een vaste user account instelt dan kan ik deze hierin vinden. en als men dit niet doet maar wel een reset mogelijkheid geeft zonder dat je ingelogt moet zijn wat kan leiden tot de standaart account die terug komt kan dit ook een vulnerability zijn, demogelijkheden zijn eindeloos.
de eerste folder die mijn aandacht trok was een folder genaamt:
mydlink
het was vindbaar op de root van het fs en bevatte enkele scripts
d
een van de eerste scripts of executables was een binary file(dcp) waar ik een grep gedaan had op een strings naar username, en ik kreeg enkele items maar geen aanduidingen, nog geen idee wat deze file doet
de tweede file die mij interesseerde was een file genaamt mydlink-watch-dog.sh
hierin vond ik enkele dingen uit: het systeem gebruikt een apache webserver en de file van daarnet geeft meerdere functies aan andere programmas, bv in mywatchdog worden deze soort van commands gebruikt:
mdb get dev_model
wat waarschijnlijk betekend dat het programma mdb een get functie heeft, en dev_model geeft de modelnaam van het systeem terug
tdb geeft ook enkele get mogelijkheden
ik denk dat dit betekend dat als ik vulnerabilities vind in dit systeem dat ze ook een kans hebben om te werken op andere dlink camera's aangezien ze checken welke camera je hebt in het script dat waarschijnlijk voor iedereen runned
dan vond ik de main run methode van de watch dog:
``
while [ 1 ]
do
curpid=cat ${WATCHDOG_PID}
if [ "0$$" -ne "0$curpid" ]; then
log "Unexpected pid (self: $$ cur: $curpid), exit!"
exit 255
fi
if [ "0$has_ca_refresh" = "01" ]; then # check CA list need_to_check $MYDLINK_BASE if [ $? -eq 0 ]; then refresh_ca $MYDLINK_BASE fi fi
check running status of mydlink agents
check_alive dcp "-i $LAN_INT -m $MODEL_NAME" check_alive signalc
check if device in privacy mode
if [ "1" -eq "$HAS_MDB" ]; then
PRIVACY_MODE=$DEV_CMD $GET_PRIV_CMD
# check format
if [ $? -ne 0 ] || [ "1" -ne "$PRIVACY_MODE" ]; then
PRIVACY_MODE=0
fi
fi
if device in privacy mode, we are not going to check httpd service
if [ "0" -eq "$PRIVACY_MODE" ]; then
# check web services
runs=expr $runs + $UNIT_CHECK_T
if [ $runs -ge $HTTP_CHECK_T ]; then
http_port=$DEV_CMD $PORT_CMD
https_port=$DEV_CMD $SPORT_CMD
if [ "0$STREAM_CGI" = "0" ]; then
STREAM_CGI=`detect_stream_cgi $http_port`
fi
health_check_httpd "$http_port" "$https_port" "$STREAM_CGI"
runs=0
fi
fi
sleep $UNIT_CHECK_T done ´
daarna ben ik gegaan naar de etc map, en jammer genoeg is hier enkel een fstab aanwezig om te tonen hoe de fs gemount moet worden. maar er is ook een etc_ro folder en daarin zitten meerderen interessante dingen. zoals gensslkey.sh etc, mijn goal was om een config van de httpd server te vinden
er is een file met de naam build aanwezig wat wss de versie van de firmware is? het bevat gewoon een nummer, mss een build nummer maar ik dacht dat deze specifiek waren voor elk geproduceerd item. mss wordt deze file overschreven wanneer de os runned
de volgende file is het gensslkey.sh script wat met gebruik van openssl een paar ssl keys aanmaakt
dan zijn er nog 2 icons aanwezig
volgende file is inittab dit houd gewoon enkele locaties bij?
::sysinit:/etc_ro/rcS #ttyS1::respawn:/bin/sh ttyS1::respawn:/bin/login
ik zal deze files onthouden voor laten maar als ik bv de 2e lijn uncomment en de laatste comment dan denk ik dat als de os opstart dat hij direct opstart in de shell
volgende file is lld2d.conf, en dit blijkt te maken hebben met het link layer topology discovery protocol. ingebouwde network discovery. het verwijst naar de twee afbeeldingen en de interface waar het zich op zal promoten wss
volgende file is de message of the day, deze is redelijk tof
Welcome to
_______ _______ ___ __ ____ _ _ ___
| ___ | __ || | ||| \ | || | / /
| || || || || |_ __ | | || |/ /
| _ /| _ || || || |\ ||
|| __|| |||||||| _|||__\
=System Architecture Department=
mss in mijn bootsequence steken voor mezelf
dan is er een openssl config file (openssl.cnf)
momenteel niet het meest interessante dat er is maar kan later handig lijken
volgende file is rcS en dit is een shell script? er stond posix in het begin bij mijn file command
dit kan de boot sequence zijn van de os?
het start de nvram_daemon op en enabled de usb hot-plug feature en dan wacht hij tot de nvram_daemon opgestart is
dan start hij een script op dat internet.sh noet, wat eigenlijk wel interessant is. oh en der zijn comments van de devs in deze file wat geweldig is:
internet.sh
#for telnet debugging #security issue - don't run telnetd here -- andy 2012-07-03 #telnetd
en dan zet het de log op, deze zou wel tof zijn om eens te displayen
release was de laatste file en houd gewoon een nummer van de laatste release firmware datum
volgende folder
linuxigd dit bevat een gif bestand en een config
gif afbeelding is gewoon van een kleine pc
en dan is er een config file die upnpd.conf noemt dit is dus voor een universal plug and play systeem dat op deze server runned.
volgende map
ppp verwachtelijk point to point protocol bevat 3 folders 3g: wat blanco is peers: wat ook blanco is en plugins: wat ook blanco is :(
de usb folder is ook leeg
nu de web folder, dit is de folder waar ik het meeste hoop voor heb hier zijn een pak afbeeldingen te vinden, deze komen waarschijnlijk op de webpagina later
dan zijn er ook enkele mappen aanwezig
api hier zijn enkele jar files aanwezig
ik heb deze gedissasembled en euh. kmoe dr nog naar kijken gebruik gemaakt van java xf en jad en de andere heb ik geextract met gcab
dit was dus de api map
de volgende map is de cgi map, en deze bevat een gans pak scripts
audiocfg.cgi is een config voor de audio cgiversion.cgi is letterlijk een file die de cgiversion toont common.cgi houd een groot stuk commen data bij door bepaalde functies te callen (model brand version build name etc) datetime.cgi houd data bij over de datetime daynight.cgi een script dat de dag nacht scheduled zodat de ir sensor aan kan op de juiste momenten dbglevel.cgi houd bij welk debug level de os heeft, mss een tof idee om dit hoger te zetten en dan te repacken en zien wat dit geeft als firmware voor de camera email.Cgi een scehduler voor de email service, houd username en password bij, dit lijkt niet super veilig, maar sure iactiveuser.cgi toont de eerste user van de active user table iaudio.cgi houd een pak vars bij van of de audio enabled is het volume codec en sample rate iimage.cgi houd info over de video bij (resolutie framrate etc) image.cgi houd dezelfde info bij van iimage.cgi denk ik? nvm klein beetje meer info zoals antiflicker inetwork.cgi houd ip adress bij, en andere shit, zoals de bonjour service wat ik denk dat een apple service is isysdevice.cgi meer info over het apparaat isystem.cgi andere info over het apparaat iwireless info over het wireless interface van het apparaat motion.cgi settings voor de motion sensor networkcgi info over network settings sdbdetectoin.cgi sound detection settings sitesurvey.cgi runned sitesurveylist(); strminfo.cgi wss streaminfo settings upgradestatus toont laatste download status upload.cgi heeft een pak ftp info, mss is er dus ook een ftp server op dit apparaat user.cgi enabled acces control mss? no idea tbh userlist.cgi geeft de list van users weer usermod.cgi geeft opties om een user aan te passen? wacht mss zijn deze allemaal om settings aan te passen, in welk geval nu kan je dus hiermee de group en naam en pass van de user aanpassen wireless.cgi set de keys enzo voor wireless connectivity
dus nu we dit gezien hebben willen we wss die commands runnen om dan onze eigen user toe te voegen
de volgende folder die we gaan bekijken is pack deze bevat een pak lzma bestanden, die we dus elk gaan uitpakken na de eerste uit te pakken kan ik zien dat dit een html bestand moet voorstellen
deze heb ik dan allemaal uitgepakt want fuck it, en dus gaan we ze nu een voor een afgaan (file zegt dat ze allemaal data zijn dus fuck me)
het zijn allemaal html files
web bleek niet zo nuttig te zijn als ik hoopte
dan hebben we in de map wireless een config file staan in de onderliggende map rt28.... deze heeft een login en passwoord staan
dit blijkt de ssid te zijn vaan een router genaamd: https://wikidevi.com/wiki/Belkin_F5D8233-4_v1
in de map wlan vinden wen een binary met de naam RT5350_AP_1T1R_V1_0.bin
dit is de naam van een wifi module dus wss de wireless driver van dit apparaat
de laatste map xml is blanco
nu als we terug kijken was er een interessante file bin/login
dus mijn volgende doelwit is de bin folder hier zijn een doenbaar aantal scripts aanwezig dus ik kan ze allemaal eigenlijk wel bekijken, laten we dus starten bij a en we komen login wel tegen wanneer we et tegen komen
alphapd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ash: symbolic link to busybox ated: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped audiopush: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped busybox: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped cat: symbolic link to busybox chmod: symbolic link to busybox cp: symbolic link to busybox date: symbolic link to busybox echo: symbolic link to busybox gpio: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped grep: symbolic link to busybox htmlunpack: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped i2c: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped imagetp: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped inadyn: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped iperf: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ipush: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped iwpriv: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped kill: symbolic link to busybox lanconfig: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped lld2d: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped login: symbolic link to busybox ls: symbolic link to busybox mail: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mdb: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mii_mgr: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mkdir: symbolic link to busybox mknod: symbolic link to busybox mount: symbolic link to busybox msmtp: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mtd_write: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mydlinkevent: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped netstat: symbolic link to busybox notifystream: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ntpclient: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped nvram_daemon: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped nvram_get: symbolic link to ralink_init nvram_set: symbolic link to ralink_init openssl: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ov7740: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped pcmcmd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ping: symbolic link to busybox pppoecd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ps: symbolic link to busybox pwd: symbolic link to busybox ralink_init: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped reg: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped rm: symbolic link to busybox schedule: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped sed: symbolic link to busybox sh: symbolic link to busybox sleep: symbolic link to busybox sounddb: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped switch: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped sync: symbolic link to busybox touch: symbolic link to busybox umount: symbolic link to busybox upgradefw: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped uvc_stream: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped alphapd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ash: symbolic link to busybox ated: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped audiopush: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped busybox: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped cat: symbolic link to busybox chmod: symbolic link to busybox cp: symbolic link to busybox date: symbolic link to busybox echo: symbolic link to busybox gpio: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped grep: symbolic link to busybox htmlunpack: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped i2c: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped imagetp: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped inadyn: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped iperf: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ipush: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped iwpriv: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped kill: symbolic link to busybox lanconfig: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped lld2d: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped login: symbolic link to busybox ls: symbolic link to busybox mail: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mdb: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mii_mgr: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mkdir: symbolic link to busybox mknod: symbolic link to busybox mount: symbolic link to busybox msmtp: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mtd_write: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped mydlinkevent: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped netstat: symbolic link to busybox notifystream: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ntpclient: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped nvram_daemon: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped nvram_get: symbolic link to ralink_init nvram_set: symbolic link to ralink_init openssl: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ov7740: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped pcmcmd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ping: symbolic link to busybox pppoecd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped ps: symbolic link to busybox pwd: symbolic link to busybox ralink_init: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped reg: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped rm: symbolic link to busybox schedule: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped sed: symbolic link to busybox sh: symbolic link to busybox sleep: symbolic link to busybox sounddb: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped switch: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped sync: symbolic link to busybox touch: symbolic link to busybox umount: symbolic link to busybox upgradefw: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped uvc_stream: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
so bin wasn't that usefull, however there's also an fs/sbin location, and this one seems more usefull i copied it to further inspect it, and i've removed de busy box links from it so i only have the selfmade scripts all of them are executable by anyone
so, what do they do, lets start off with predictions because this might take time
acodec "codec stuff" automount_boot mounts stuff that needs to be mounted, might hold some info thats worth it automount same shit i think cameraname doesn't seem super important, just getrs the name of the camera module chpasswd this one will be amazingly good if we can find a way to execute it, probably changes the password of user x config-dns just what it says on the tin config-igmpproxy.sh something to do with proxy's have to search what igmp means config.sh this could be anything, def worth checking config-udhcpd dhcp settings cpubusy no idea cpu management? ddns dns settings dhcp dhcp settings focus no idea internet no idea, presumably to do with the webserver lan lan settings ntp ntp settings pppoe plug and play stuff? snort i don't know but i recognize this name ucp no idea udev no idea udhcpc dhcp stuff video script to start the video feed maybe vpn-passthru vpn stuff web something about the websrever wlan wireless stuff zcip no idea
so, lets look at the important ones
automounts:
mounts media en dev with the parameter it's given? it's weird
chpasswd.sh:
gets the username and password from nvram, which is wild, and then if no user is set exists, if it is, it changes the password using chpasswd which i don't get wtf it's doing, but steven wrote it in 2015
it like writes the password to temporary storage and then issues the chpasswd command with those username and password and then it removes the temporary storage written stuff
config for now isn't as usefull as i thought
cpubusy copy's shit into a file and echo's some shit and does it again, forever, it seems to overload the cpu? or like try to run out all other services by keeping that stuff up
next up was the script internet.sh and this one gave me an insane idea, so, nvram gets the username right? so there has to be some place that sets it, and i looked for some stuff, and there's a file in bin that uses it, i searched for it using the command:
grep -rnw '.' -e 'nvram_set'
so this file has to be usefull since it has this set in it, i'm copying it to the main dir to check
dus blijkbaar is er een speciale authenticatie via http aanwezig op dit apparaat, en hij wijgert een pak url's die ik probeer om andere shit te starte bv, dus wa ik ga probere, om een cracker te schrijve die alle passwoorden afgaat
some ports are also open
port 80 port 443 port 8385